Android 学习计划更改Activity代码分析:功能实现及设计思路
Android 学习计划更改Activity代码分析:功能实现及设计思路
该代码是一个更改学习计划的Activity,主要功能是更改用户需要背诵的单词量,并根据用户选择的书籍下载解析相应的单词数据。具体实现步骤包括:初始化控件、获取用户选择的书籍信息、根据书籍信息显示最大背单词量和书名、设置用户需要背诵的单词量、下载解析单词数据、重置上次学习时间和删除当天打卡记录,最终跳转到主界面。该Activity主要使用了LitePal数据库、OkHttp网络请求、ProgressDialog等技术。
设计思路
-
在onCreate()方法中初始化控件,获取用户选择的书籍信息,并从数据库中获取用户上次设置的单词量,如果不为0,则将其显示在输入框中。
-
当用户点击'确定'按钮时,获取输入框中的单词量,判断是否在合理范围内(5~最大单词量-1),如果是,则更新数据库中的单词量信息,并根据用户选择的书籍信息下载解析相应的单词数据。
-
下载和解析单词数据的过程使用了ProgressDialog来显示等待框,并使用了Handler来更新等待框的提示信息和在下载完成后执行的操作。
-
当单词量被更新时,需要重置上次学习时间和删除当天打卡记录,以保证用户从新的计划开始学习。
-
在Activity的onBackPressed()方法中,如果用户之前没有设置过单词量,则跳转到选择单词库的页面,否则执行默认的返回操作。
实现过程和思路
-
onCreate()方法
- 首先调用init()方法初始化控件。
- 然后获取用户选择的书籍信息。
- 最后从数据库中获取用户上次设置的单词量,如果不为0,则将其显示在输入框中。
-
'确定'按钮点击事件
- 判断输入框中是否有值,如果有,则将其转换为整型数值,并判断是否在合理范围内(5~最大单词量-1)。
- 如果在合理范围内,则隐藏软键盘,更新数据库中的单词量信息,并根据用户选择的书籍信息下载解析相应的单词数据。
-
下载和解析单词数据
- 使用ProgressDialog来显示等待框。
- 使用Handler来更新等待框的提示信息和在下载完成后执行的操作。
- 具体实现方法:点击'确定'按钮后,如果是第一次设置数据,则先显示等待框,并延迟两秒再运行,防止等待框不显示。
- 开启一个新线程,使用OkHttp来下载相应的数据包,并使用FileUtil工具类将其保存到本地文件夹中。
- 使用FileUtil工具类解压数据包,并调用JsonHelper工具类解析数据包中的JSON数据并保存到数据库中。
- 最后,使用Handler发送消息来更新等待框的提示信息和在下载完成后执行的操作(重置上次学习时间和删除当天打卡记录,并跳转到主界面)。
-
更新单词量后的操作
- 在Handler中接收到下载完成的消息后,先重置上次学习时间,然后根据当前日期和用户ID来删除当天打卡记录。
-
onBackPressed()方法
- 从数据库中获取用户上次设置的单词量。
- 如果不为0,则执行默认的返回操作,否则跳转到选择单词库的页面。
代码示例
public class ChangePlanActivity extends BaseActivity {
// ... 其他代码 ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_plan);
init();
// ... 获取书籍信息和上次设置的单词量 ...
textGo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ... 获取输入框中的单词量 ...
// ... 判断单词量是否在合理范围内 ...
// ... 更新数据库中的单词量信息 ...
// ... 下载和解析单词数据 ...
// ... 重置上次学习时间和删除当天打卡记录 ...
ActivityCollector.startOtherActivity(ChangePlanActivity.this, MainActivity.class);
}
});
}
// ... 其他方法 ...
}
总结
该Activity代码主要利用LitePal数据库、OkHttp网络请求、ProgressDialog、Handler等技术实现了更改学习计划的功能。通过详细分析代码的编程思路、设计思路和关键代码功能实现,我们可以更加深入地理解Android应用开发中常用的技术和方法。
原文地址: https://www.cveoy.top/t/topic/oeaL 著作权归作者所有。请勿转载和采集!