Android Studio实现记单词App,背完四六级一次过~

您所在的位置:网站首页 背单词正确步骤是什么 Android Studio实现记单词App,背完四六级一次过~

Android Studio实现记单词App,背完四六级一次过~

2024-06-02 05:27| 来源: 网络整理| 查看: 265

项目目录 一、项目概述二、主要技术三、开发环境四、详细设计1、数据库2、单词详情3、搜索单词 五、运行演示六、源码获取

一、项目概述

本系统包含高考、四级、六级、托福和雅思词汇五个章节。每个章节分为多个单元,每个单元又包含上百个词汇。可以在单元列表查询单词,实时记录每个单元的阅读时间,点进单词详情页,有单词的拼写、音标、释义和例句,底部导航栏可以查看前一页和后一页,还可以进行自动播放,可以手动滑动页面,右上角可以设置播放速度。是一款很给力的记单词软件。

二、主要技术

主要应用的技术如下:

Fragment碎片ViewPagerSharedPreferencesMediaPlayerHandler消息机制SQLiteDatabaseBundleListViewFileOutputStreamTimerMediaPlayerDialog

本项目知识点还是很多的,虽然看起来功能不算多,但是实现起来很不容易。

三、开发环境

开发环境依旧是在3.5.1上进行开发的,只要你的AS是近两年从官网下载的,都是可以满足的。

在这里插入图片描述

四、详细设计 1、数据库

本项目的数据库采用已有的单词数据库word.db文件,通过读文件的方式,从数据库中读取存储的单词数据。

public SQLiteDatabase getDatabase() { String path = mContext.getDir(Const.DB_DIR, Context.MODE_PRIVATE) + File.separator + Const.DB_NAME; return SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE); }

与以往的数据库帮助类不同,这次并没有提前创建好数据库和表,而是在欢迎活动中调用构造函数进行创建,创建之后会自动执行建表语句。

// 创建数据库和表 private void initTable() { DBOpenHelper dbOpenHelper = DBOpenHelper.getInstance(this); SQLiteDatabase database = dbOpenHelper.getDatabase(); database.execSQL("create table if not exists TABLE_UNIT (" + "Unit_Key integer not null," + "Unit_Time integer not null default 0," + "Cate_Key text references TABLE_META(Meta_Key)" + ");"); for (String metaKey : Const.META_KEYS) { Cursor cursor = database.rawQuery("select Meta_UnitCount from TABLE_META where Meta_Key=?;" , new String[]{metaKey}); if (cursor.moveToFirst()) { int count = cursor.getInt(cursor.getColumnIndex("Meta_UnitCount")); for (int i = 1; i i, 0, metaKey}); } } cursor.close(); } } 2、单词详情

首先肯定创建单词和单元的实体类,其实就是数据表的结构。类的内容就是:类的属性、构造函数、get和set方法。

/** * 单词实体类 */ public class Word implements Parcelable { //Word_Id, Word_Key, Word_Phono, Word_Trans, Word_Example, Word_Unit; private int mId; private String mKey; private String mPhono; private String mTrans; private String mExample; private int mUnit; public Word() { } public Word(int id, String key, String phono, String trans, String example, int unit) { mId = id; mKey = key; mPhono = phono; mTrans = trans; mExample = example; mUnit = unit; } public int getId() { return mId; } public void setId(int id) { mId = id; } public String getKey() { return mKey; } public void setKey(String key) { mKey = key; } public String getPhono() { return mPhono; } public void setPhono(String phono) { mPhono = phono; } public String getTrans() { return mTrans; } public void setTrans(String trans) { mTrans = trans; } public String getExample() { return mExample; } public void setExample(String example) { mExample = example; } public int getUnit() { return mUnit; } public void setUnit(int unit) { mUnit = unit; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.mId); dest.writeString(this.mKey); dest.writeString(this.mPhono); dest.writeString(this.mTrans); dest.writeString(this.mExample); dest.writeInt(this.mUnit); } protected Word(Parcel in) { this.mId = in.readInt(); this.mKey = in.readString(); this.mPhono = in.readString(); this.mTrans = in.readString(); this.mExample = in.readString(); this.mUnit = in.readInt(); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public Word createFromParcel(Parcel source) { return new Word(source); } public Word[] newArray(int size) { return new Word[size]; } }; }

单词详情包含单词的拼写、单词的音标、单词的释义和单词的例句,通过数据库方法获取到单词的这些信息,然后依次填入TextView中,具体实现起来肯定还有很多细节点。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_detail, container, false); TextView tvExample = (TextView) view.findViewById(R.id.tv_exam); TextView tvKey = (TextView) view.findViewById(R.id.tv_key); TextView tvPhono = (TextView) view.findViewById(R.id.tv_phono); TextView tvTrans = (TextView) view.findViewById(R.id.tv_trans); final Word word = getArguments().getParcelable(Const.WORD_KEY); mImageView = (ImageView) view.findViewById(R.id.icon_speech); mImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnSpeechListener != null) { mOnSpeechListener.speech(word); } } }); if (word != null) { tvExample.setText(word.getExample()); tvKey.setText(word.getKey()); tvPhono.setText("[" + word.getPhono() + "]"); tvTrans.setText(word.getTrans()); } return view; } 3、搜索单词

在点击搜索框时,定义了mSearchFgt,用mSearchFgt的fragment先替换UnitList的fragment,然后在检测搜索框中有内容时,通过onQueryTextChange方法获取数据源,并通知适配器更新数据源。

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_search, menu); MenuItem item = menu.findItem(R.id.menu_item_search); mSearchView = (SearchView) item.getActionView(); if (mSearchView != null) { mSearchView.setInputType(InputType.TYPE_CLASS_TEXT); mSearchView.setOnSearchClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mActionBar.setDisplayHomeAsUpEnabled(true); mWordDao = new WordDao(UnitListActivity.this); FragmentTransaction transaction = mFragmentManager.beginTransaction(); transaction.hide(mUnitListFgt); if (mSearchFgt == null) { mSearchFgt = SearchFgt.newInstance(mMetaKey); transaction.add(R.id.unit_content, mSearchFgt); } else { transaction.show(mSearchFgt); } transaction.commit(); } }); mSearchView.setQueryHint(getString(R.string.search_hint)); mSearchView.setOnQueryTextListener(this); } return true; } @Override public boolean onQueryTextChange(String newText) { ArrayList words = null; if (!TextUtils.isEmpty(newText)) { words = mWordDao.queryWords(mMetaKey, newText); } mSearchFgt.refresh(words); return true; } 五、运行演示

1、启动程序,首先是1s的欢迎界面。

在这里插入图片描述

2、主界面包含五大模块,包含高考、四级、六级、托福、雅思五大章节词汇。

在这里插入图片描述 3、我们选择雅思模块,进入单元列表界面。

在这里插入图片描述

4、选择Unit1,进入单词列表界面。

在这里插入图片描述

5、点进任意一个单词,我选择从第一个单词开始背,发现是abandon放弃的意思。

在这里插入图片描述

6、点击底部导航栏的后退,提示“已经是第一页”。

在这里插入图片描述 7、点击前进,可以自动翻到下一页,看到了第二个单词,当然我们也可以用手指左右滑动。

在这里插入图片描述

8、点击播放,可以按照指定的速度自动切换页面。

在这里插入图片描述

9、点击右上角菜单按钮,选择速度。

在这里插入图片描述

10、返回到单元列表,可以看到累积阅读的时长,来制定合理学习方案。

在这里插入图片描述

11、右上角搜索栏中输入需要查找的单词,下面会显示符合搜索要求的单词,原理就是字符串匹配筛选。

在这里插入图片描述

12、可以看到我们找到了fresh这个单词,点击进入详情页面。退出程序需要双击两次退出键才会退出。

在这里插入图片描述

13、最后从六级词汇中选择一个单词送给大家,你们都要做自己生活的champion!

在这里插入图片描述

六、源码获取 ♻️下面两种方式都可以获取源代码1️⃣ 点击直接下载 Android Studio 记单词App2️⃣关注公众号《 萌新加油站 》,后台回复: 单词 🚀这有你错过的精彩内容Android Studio实现外卖订餐系统Android Studio实现考试管理系统Android Studio实现天气预报系统Android Studio实现图书馆订座系统Android Studio实现前后台分离的选课系统

功崇惟志,业广惟勤。——佚名



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3