android项目实战-背呗单词DEV06-单词背诵实现

该篇说明

该篇我们进行单词背诵实现讲解

单词背诵功能主要在单词详解界面中WordDetActivity

> 在单词列表界面中点击按钮就可进入单词详解界面进行一个单元组范围单词的学习

> 在单词详解界面中只进行单元组范围单词学习记录, 待测试完后才算学习一次。

否则不记录到数据库

效果如图

流程图

单词详解界面功能流程详解

1> 显示单词详细信息

这里用到了WordDetView.getViev(Activity, WordDet)方法

界面组成大部分是由代码实现了,单词详解视图界面会详解

private void loadView() {
      wordDet = Global.wordDetList.get(Global.studyedWordId-1);

      //横幅标题显示单词
      hfTitleTextView.setText(wordDet.wordStr);

      //显示view
      View reciteView = WordDetView.getView(this, wordDet);
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
               LinearLayout.LayoutParams.MATCH_PARENT,
               LinearLayout.LayoutParams.MATCH_PARENT
      );

      reciteView.setLayoutParams(lp);
      reciteView.setPadding(8, 0, 8, 0);
      wordDetLinearLayout.addView(reciteView);
}

2> 切换到下一个单词

a> 添加下个单词按钮点击监听

private void logic() {
      nextButton.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View view) {
            if(Global.studyedWordId != Global.wordDetList.size()) {
                Global.studyedWordId += 1;
                toNextWord();
            } else {
                Toast.makeText(context, "当前单元已学一遍,进入测试", Toast.LENGTH_LONG).show();
                Global.studyedWordId = 1;
                toNextView(WordExamActivity.class);
            }
         }
      });
}

b> 切换到下个单词

private void toNextWord() {
      wordDetLinearLayout.removeAllViews();
      loadView();
}

单词详解视图类详解WordDetView

该类主要生成大部分界面控件

1> 获得详解单词view

public static View getView(Activity tmpActivity, WordDet tmpWordDet) {
      activity = tmpActivity;
      wordDet = tmpWordDet;

      //确定布局
      confirmLayout();

      //添加单词字符串视图
      addWordStrTextView();

      //添加音标字符串视图
      addPronTextView();

      //添加释义相关视图(包括标题和内容)
      addDefView();

      //添加例句相关视图(包括标题和内容)
      addExamplesView();

      return scrollView;

}

2> 确定布局

 private static void confirmLayout() {
       // 第一步:创建滚动视图
        scrollView = new ScrollView(activity);

        // 第二步:创建线性布局并加入到滚动视图中
        linearLayout = new LinearLayout(activity);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        ScrollView.LayoutParams lp = new ScrollView.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT
            );
        lp.setMargins(0, 0, 0, 0);
        lp.gravity = Gravity.FILL_HORIZONTAL;
        linearLayout.setLayoutParams(lp);
        scrollView.addView(linearLayout);
}

3> 添加单词字符串视图

private static void addWordStrTextView () {
      TextView wordStrTextView = new TextView(activity);
        wordStrTextView.setText(wordDet.wordStr);
        wordStrTextView.setTextSize(28);
        wordStrTextView.setTypeface(null, Typeface.NORMAL);
        wordStrTextView.setTextColor(0xFF000088);
        linearLayout.addView(wordStrTextView);
}

4> 添加音标字符串视图

 private static void addPronTextView() {
      TextView pronView = new TextView(activity);
      pronView.setText(String.format(" /%s/", wordDet.pron));
      pronView.setTextSize(18);
      pronView.setTextColor(0xFF000000);
      linearLayout.addView(pronView);
}

5> 添加释义相关视图(包括标题和内容)

private static void addDefView() {
      //第1步:获取释义内容集合
      List<String> defList = wordDet.definitions;

      // 第2步:添加释义标题
        if (defList != null && defList.size() > 0) {
            TextView defIndicatorView = new TextView(activity);
            defIndicatorView.setText("释义");
            defIndicatorView.setTextSize(14);
            defIndicatorView.setTextColor(0xFF000000);
            defIndicatorView.setBackgroundColor(
                 activity.getResources().getColor(R.color.vred2));

            LinearLayout.LayoutParams lpIndic = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
                );
            lpIndic.setMargins(0, 8, 0, 8);
            defIndicatorView.setLayoutParams(lpIndic);
            linearLayout.addView(defIndicatorView);
        }

        // 第3步:添加释义内容(包含多个)
        if (defList != null && defList.size() > 0) {
            for (String defiText : defList) {
                TextView origView = new TextView(activity);
                origView.setText(defiText);
                origView.setTextSize(16);
                origView.setTextColor(0xFF000000);
                linearLayout.addView(origView);
            }
        }
   }

6> 添加例句相关视图(包括标题和内容)

private static void addExamplesView() {
      // 第1步:获取英文和中文例如集合
      List<String> examplesOrigList = wordDet.examplesOrig;
      List<String> examplesTransList = wordDet.examplesTrans;

      // 第2步:添加例如标题
      if (examplesOrigList != null && examplesOrigList.size() != 0) {
            TextView examplesView = new TextView(activity);
            examplesView.setText("例句");
            examplesView.setTextSize(14);
            examplesView.setTextColor(0xFF000000);
            examplesView.setBackgroundColor(
                 activity.getResources().getColor(R.color.vred2));
            LinearLayout.LayoutParams lpIndic = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
                );
            lpIndic.setMargins(0, 16, 0, 8);
            examplesView.setLayoutParams(lpIndic);
            linearLayout.addView(examplesView);
        }

        // 第3步:添加英文和中文例句
        for (int i = 0; i < examplesOrigList.size(); ++i) {
              //英文例句
                TextView origView = new TextView(activity);
                origView.setText(examplesOrigList.get(i).
                   replace("<em>", "").replace("</em>", ""));
                origView.setTextSize(16);
                origView.setTextColor(0xFF000000);
                linearLayout.addView(origView);           

              //中文翻译
                TextView transView = new TextView(activity);
                transView.setText(examplesTransList.get(i));
                transView.setTextSize(16);
                LinearLayout.LayoutParams lpTrans = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT
                        );
                lpTrans.setMargins(0, 0, 0, 0);
                transView.setLayoutParams(lpTrans);
                transView.setTextColor(0xFF888888);
                linearLayout.addView(transView);
        }
}

更多请自行下载源码解读

应用下载:请点击

源码下载:请点击

时间: 2024-10-12 04:15:06

android项目实战-背呗单词DEV06-单词背诵实现的相关文章

android项目实战-背呗单词00-文章目录

一.准备篇android项目实战-背呗单词00-文章目录android项目实战-背呗单词01-软件说明android项目实战-背呗单词02-项目概述android项目实战-背呗单词03-项目图表android项目实战-背呗单词04-项目数据库说明 二.重要技术实现说明android项目实战-背呗单词DEV00-程序环境构架搭建android项目实战-背呗单词DEV01-拷贝单词书实现android项目实战-背呗单词DEV02-创建计划实现android项目实战-背呗单词DEV03-创建任务实现a

android项目实战-背呗单词DEV07-单词测试实现

该篇说明 该篇我们进行单词测试实现讲解 也就是单词测试界面WordExamActivity中功能 布局也需要在xml中实现 但是也需要有单词测试视图类来设置一些值具体查看对照源码 在该界面中,测试完后会更新数据 效果如图 流程图 单词测试界面功能流程详解 1> 显示单词测试信息 a> 首先要加载单词测试数据 需要调用单词测试管理模块加载数据功能 private void loadWordExamData() { loadingExamDataProgressBar = (ProgressBar

android项目实战-背呗单词02-项目概述

本篇说明: 项目概述主要包括 1> 项目开发说明 2> 功能需求说明 3> app原型图 4> 效果演示图 项目开发说明: 1> 在学习android过程中,看到别人的一些词典开发文章但是不完整所以就有了该项目的启动了 2> 在开发过程中,加强了项目文档的经验,最后使用了迭代思维 3> 该项目经过多次UI改进,所以耗时比较长,因为也是业余开发,并整理了UI和Utils两套简单的android组件库 功能需求说明: 这里功能需求按照产品需求及软件模块描述 1>

android项目实战-背呗单词DEV02-创建计划实现

该篇说明 该篇我们来详解创建计划功能实现. 创建计划功能是在创建计划界面中的. 也就是在CreatePlanActivity中 在后台模块中只描述管理层,其它的数据库操作等请自行查看 效果如图 执行流程图 创建计划UI界面功能说明 1> 横幅显示创建计划字符 hfTitleTextView = (TextView) findViewById(R.id.hfTitleTextView); hfTitleTextView.setText("创建计划"); 2> 创建计划项的填写

android项目实战-背呗单词DEV01-拷贝单词书实现

该篇说明 现在我们正式进入功能及代码的分析 主要进行重要功能的讲解吧. 拷贝单词书功能在第一个界面中 也就是在欢迎界面WelcomeActivity中 项目整体构架是MVC模式的 UI中主要只进行调用显示数据 真正的数据处理逻辑在客户端后台. 那么先介绍UI及流程,再描述后台的拷贝单词书功能. 效果如图 执行流程图 流程详细说明 1> 先需要检查单词书 首先需要检查SDcard中是否存在单词书文件,不存在才需要进行拷贝 private void checkWordBookFiles() { bo

android项目实战-背呗单词DEV00-程序环境构架搭建

要开发项目当然要首先进行环境的搭建 我们这里使用的是eclipse+ADT 下载开发环境所需软件 1> JDK1.7 下载地址:百度云点我 官网地址:请点击我 2> Eclipse4.4 luna 下载地址:百度云点我 官网地址:请点击我 3> Android SDK Manager 24.0.2 下载地址:百度云点我 (特别说明:我的百度云已经包含了4.0.3和2.1的SDK) 官网地址:请点击我直接下载 4> ADT 24.0.2 下载地址:百度云点我 官网地址:请点击我直接下

android项目实战-背呗单词03-项目图表

本篇说明: 包括相关图和相关表 相关图 1> 总体流程图 2> 软件功能图 3> 软件模块图 4> 软件构架图 相关表 1> 功能需求表 2> 功能需求与管理模块的关系表 3> 包结构表 图相关 1> 总体流程图 2> 软件功能图 3> 软件模块图 4> 软件构架图 表相关 有待更新

android项目实战-背呗单词DEV05-主界面自定义menu

该篇说明 该篇我们进行主界面自定义底部菜单使用的讲解 主界面也就是当天任务界面FragmentActivity 自定义menu的功能需要导入V1UILibrary即可 源码地址:https://github.com/vomzoo/VOMAndroidUILib 在主界面只是调用自定义menu,具体实现暂请看V1UILibrary源码 效果如图 流程图 主要UI功能 1> 重写onCreateOptionsMenu并添加一项 /** * 自定义menu,必须创建一项 */ @Override pu

(转载)Android项目实战(三十二):圆角对话框Dialog

Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角显示 2.考虑到提示文本字数不确定,在不影响美观的情况下,需要在一行内显示提示的文字信息   3.设置对话框的宽和高 技术储备: 1.安卓开发_使用AlertDialog实现对话框    知道AlertDialog有setView(view) ,Dia