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

这篇具有很好参考价值的文章主要介绍了Android Studio实现记单词App,背完四六级一次过~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、项目概述

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

二、主要技术

主要应用的技术如下:

Fragment碎片 ViewPager SharedPreferences MediaPlayer
Handler消息机制 SQLiteDatabase Bundle ListView
FileOutputStream Timer MediaPlayer Dialog

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

三、开发环境

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

四、详细设计

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 <= count; i++) {
                 database.execSQL("insert into TABLE_UNIT (Unit_Key,Unit_Time,Cate_Key) " +
                         "values(?,?,?);", new Object[]{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<Word> CREATOR = new Parcelable.Creator<Word>() {
        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<Word> words = null;
     if (!TextUtils.isEmpty(newText)) {
         words = mWordDao.queryWords(mMetaKey, newText);
     }
     mSearchFgt.refresh(words);
     return true;
 }

五、运行演示

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设
3、我们选择雅思模块,进入单元列表界面。

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设
7、点击前进,可以自动翻到下一页,看到了第二个单词,当然我们也可以用手指左右滑动。

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

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

getparcelablearraylist android studio,Android项目,android,移动应用开发,安卓app,源代码,android课设

六、源码获取

♻️下面两种方式都可以获取源代码
1️⃣ 点击直接下载 Android Studio 记单词App
2️⃣关注公众号《 萌新加油站 》,后台回复: 单词

🚀这有你错过的精彩内容
Android Studio实现外卖订餐系统
Android Studio实现考试管理系统
Android Studio实现天气预报系统
Android Studio实现图书馆订座系统
Android Studio实现前后台分离的选课系统

功崇惟志,业广惟勤。——佚名文章来源地址https://www.toymoban.com/news/detail-778444.html

到了这里,关于Android Studio实现记单词App,背完四六级一次过~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android:安卓开发采用Volley网络框架+MySQL数据库,实现从服务器获取数据并展示完成记单词APP

    实现功能:设计一个记单词APP。服务器采用Tomcat,数据库采用Mysql。实现用户的注册登录功能以及单词的增删改查。 指标要求:实现UI布局;将系统数据保存到Mysql数据库中,并采用Volley网络框架实现从服务器获取数据并展示。 步骤1:搭建开发环境。 步骤2:准备资源。 步骤

    2024年02月13日
    浏览(47)
  • Android studio课程设计开发实现---日记APP

    你们好,我是oy,介绍一个简易日记APP。 1.启动页、引导页及登陆注册 2.日记相关功能 3.个人中心界面 实现应用启动页及引导页 实现设置密码进入APP,对密码进行加密处理 实现底部导航栏,分为日记列表,新建日记,个人中心模块 实现对日记删除、修改、新增的基础功能

    2024年02月03日
    浏览(65)
  • Android Studio 实现天气预报App (简单方便展示内容超多)

    🍅 文章末尾有获取完整项目源码方式 🍅 目录 前言 一、任务介绍 1.1 背景 1.2目的和意义 二、 实现介绍 视频演示 2.1 启动页实现 2.2注册页面实现 2.3 登陆页面实现 2.4 首页实现 2.5 城市管理列表页面实现                三、获取源码         在使用Android Studio开发

    2024年04月24日
    浏览(48)
  • Android Studio:一个简单的计算器app的实现过程<初级>

    📌Android Studio 专栏正在持续更新中,案例的原理图解析、各种模块分析💖这里都有哦,同时也欢迎大家订阅专栏,获取更多详细信息哦✊✊✊ ✨个人主页:零小唬的博客主页 🥂欢迎大家 👍点赞 📨评论 🔔收藏 ✨作者简介:20级计算机专业学生一枚,来自宁夏,可能会去

    2024年02月01日
    浏览(106)
  • Android Studio:一个简单的米英尺单位转化app的实现过程

    📌Android Studio 专栏正在持续更新中,案例的原理图解析、各种模块分析💖这里都有哦,同时也欢迎大家订阅专栏,获取更多详细信息哦✊✊✊ ✨个人主页:零小唬的博客主页 🥂欢迎大家 👍点赞 📨评论 🔔收藏 ✨作者简介:20级计算机专业学生一枚,来自宁夏,想从事前

    2023年04月09日
    浏览(39)
  • 蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

    前言:蓝牙聊天App设计全部有三篇文章(一、UI界面设计,二、蓝牙搜索配对连接实现,三、蓝牙连接聊天),这篇文章是:二、蓝牙搜索配对连接实现。 课程1:Android Studio小白安装教程,以及第一个Android项目案例“Hello World”的调试运行 课程2:蓝牙聊天App设计1:Android S

    2024年02月11日
    浏览(56)
  • 【android studio 简单配置多语言国际化app 一行代码实现切换语言】

    新版本的android studio配置多语言其实很简单,不过目前网上找到的几个博客都搞得很复杂,可能是版本比较老的时候出的方案,今天分享一下怎么一行代码切换语言. 1.切换语言你得先有语言对应的文本,推荐插件一键生成.在设置里搜索Androidlocalize,直接安装即可 2.安装好了以后右键

    2024年02月11日
    浏览(52)
  • Android Studio App开发实战项目之实现淘宝电商App首页界面(附源码,可用于大作业参考)

    需要源码和图片集请点赞关注收藏后评论区留言或者私信~~~ 各家电商的App首页都是动感十足,页面元素丰富令人眼花缭乱,其中运用了Android的多种组合控件,可以说是App界面开发的集大成之作,下面我们也动手实现一个。 本次项目主要模仿淘宝App采用的技术,所以有底部标

    2024年02月03日
    浏览(80)
  • Android开发:使用AndroidStudio开发记单词APP(带数据库)

    实现功能 :设计与开发记单词系统的四个界面,分别是用户登录、用户注册、单词操作以及忘记密码。 指标要求 :通过用户登录、用户注册、单词操作、忘记密码掌握界面设计的基础,其中包括界面布局、常用控件、事件处理等相关内容,通过所学内容设计与开发的界面要

    2024年02月12日
    浏览(45)
  • 使用Android Studio 利用极光推送SDK 制作手机 APP 实现远程测试技术 (第一部)

    总参考文章:https://blog.csdn.net/qq_38436214/article/details/105073213 Android Studio 安装配置教程 - Windows(详细版) 1.JDK 安装与环境变量配置(Win10详细版) 《jdk-8u371-windows-i586.exe》 https://blog.csdn.net/qq_38436214/article/details/105071088 此时会让登录账号密码: https://login.oracle.com/mysso/signon.jsp 账号:

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包