资源:
https://download.csdn.net/download/weixin_46073307/85094573?spm=1001.2014.3001.5503
- 程序介绍
本实验使用android studio 平台
sdk版本信息:
程序适用Sdk32 最低22
模拟器版本信息
我使用的模拟器为Pixel 5;Size为6.0”;Resolution为1080x2340;440dpi;使用API 32,x86_64。
功能介绍
登录界面完成第五章sql的全部内容,实现记住密码(勾选)、账号唯一、注册、登录、修改密码、注销账号、展示所有注册过的账号密码。UI设计符合第三章的课后编程实践要求,第三章其余内容在登入后的主界面均有完成。
登入后使用Fragment碎片化,通过按钮进入不同页面,使用<include标签优化布局(拼接两个布局文件)形成登入后的主界面。拥有下拉菜单,聊天界面拥有一个聊天机器人,使用图灵官网提供的api,每次进入都会以不同的话欢迎使用者 此部分还完成了课本第七章基于HTTP的网络访问(实现结果同之前每周作业里的在线课表,无法真正访问,没有实质意义上的解决)。 音乐播放器使用的是本地的mp3文件,未联网。pyq十分有趣。课本第四章广播机制和第六章多媒体体现在以上诸多功能中。
软件还拥有计算器和画图功能,计算器可以实现正常计算,与系统自带的计算器功能上无巨大区别(有上限会溢出,且因为本人水平有限无法实现使用计算结果直接进行连续计算)。画图功能可以正常使用,但是在我不断测试下发现使用清屏功能不稳定,查看代码也没发现导致有这个bug的原因(考虑将清屏功能改为重启功能以解决这一问题)。
- 功能实现
我在实现本次作业的时候都是先构思编写布局文件,方便明确要实现的功能然后再编写功能代码。所以在介绍功能实现部分的时候我按我完成作业的顺序进行介绍。
首先,在完成第三章作业时我就开始考虑大作业了,在我看来不管什么应用都需要有一个登录界面。
这里我应用了两个并列的横向线性布局
这里是我设置的登录标题,因为我将应用顶端自带的项目名的标题栏隐藏了,上方光秃秃的有些难看就设置了一个标题。登录界面的各个控件都设置了字号、背景色以及字体颜色。
这里是输入控件,设置好位置、id和inputType。
为了实现记住密码,直接使用checkbox
这里是部分按钮代码和最后的个人签名标识。
以下是实现登录界面功能的代码:
先使用修饰符private用来限定变量和方法仅供当前类调用(注意和控件id对应);
为实现记住密码操作这里得使用SharedPreferences文件(存入数据);
登录界面的账号信息得存入数据库中,我实现的方法为课本第五章内容SQLite数据库存储部分,使用Android提供的一个抽象类SQLiteOpenHelper,该类放在后面介绍。借助该类很方便的实现了数据库的创建和管理。
在之前的作业中我一直觉得应用顶端的带有项目名的标题栏很丑,加上原本项目名为text之前为了进行功能测试就复制了一个text(copy版本后期在这个复制版本中越写越多就没有更换。所以在这里我使用 getSupportActionBar隐藏了自带的标题栏使得我登录界面的UI设计更加美观。
得到EditText和CheckBox(输入框和勾选框)中的数据
完成创建数据库
这里我们先获得SharedPreferences对象和SharedPreferences对象的Editor对象。然后调用Editor对象的方法,向文件添加数据。定义一个boolean数据 通过查询得知当前是否记住了密码,然后如果选择的是记住密码就得向获得当前记住密码的用户登录信息。这里使用的是Cursor,这个方法是数据库(SQLite数据库中以表的形式存放内数据)中每一行的集合