开发小结(201509,Merrick):
本APP是第一次尝试用ADT-Eclipse开发一个Android桌面APP,
1,UI设计
界面采用分页的方式,每个分页显示一系列组件,提供增、查功能,可以通过滑动手机屏幕在每个分页之间滑动;分页标签在最顶部,能表明当前分页名称;
数据录入分页可以录入数据,该分页逐行展示输入控件对应不同数据项的说明和输入控件。
查询分页可以查询数据,并以表格的形式展现出来,并能奇偶行采用不同风格背景,该分页顶部为输入框和按钮(同一行)供输入查询条件,下方大部显示查询结果表格。
每个分页都是采用线性布局(LinearLayout)。
每个分页都有Layout文件。
主Activity对应一个ViewPager布局文件。
2,组件设计
分页框架视图组(ViewGroup)采用ViewPager和PagerTabStrip;
数据录入分页采用DatePickerDialog、EditText、TextView、Button、Spinner,获取日期、文本、数值类型的数据,并展示;
查询分页采用EditText、Button输入查询条件并查询,ListView控件(包含每行TextView、View作为列表Item)展示表格数据;
3,流程设计
采用一个Activity,一个类中初始化适配器及事件绑定,onDestroy时关闭数据库;
开始初始化4个分页View和4个标题,各自加入List,
建立ViewPager的适配器PagerAdapter:每次滑动时生成当前分页组件,滑动切换的时候销毁当前的组件。
录入分页:
DatePickerDialog的形式绑定日期按钮事件,
下拉框Spinner从全局组件List中获取分页视图并初始化、绑定适配器、绑定选择事件,
提交按钮绑定点击事件以触发保存数据到Sqlite数据的动作。
以Toast控件提示操作结果。
数据查询分页:
输入控件获取输入内容并判断,按钮提交触发查询、展示数据事件,
查询sqlite数据库,ListView适配器设定(继承SimpleAdapter类,以便更多样化个性化地展示ListView内容),需要List<Map>作为查询结果数据、列名(Map键名)数组、对应Layout组件的ID数据作为参数填入适配器。
4,数据库设计
单表sqlite数据库,继承SQLiteOpenHelper类,并在onCreate方法中建立初始数据库(sql语句);
对于需要更新数据库表结构时,可在初始化SQLiteOpenHelper继承类对象时,并在调用处传入不同的version参数(最初是1);
查询时采用Cursor取得结果用while迭代。
5,对于Sqlite数据库 *.db文件
直接访问手机(及模拟器)设备上的db文件需要手机的root权限,模拟器上可以(有root),华为手机上需要用其他方法开启root权限的动作,暂不能访问。
可以在PC上用adb工具(需要root权限)访问设备上的db文件、上传下载db文件、sqlite工具访问db数据库执行sql。可以用ADT的DDMS查看设备上的文件(需要文件权限)。
PC上用文件管理器无法访问设备上的私有文件,每个app对应被分配的用户私有文件是被隐藏的。
firefox的sqlite插件可以正确查看windows上获取到的db文件中的中文内容,sqlite命令行访问windows上的db文件(不管有没有改控制台utf-8,65001编码)中文有乱码。
sqlite命令行直接访问虚拟设备(root权限)上的db文件中文内容可以正确显示。
设备上db文件路径:/data/data/com.test.test4tabs/databases/familyfee.db ,私有,对于app安装时被分配的用户,在资源管理器中无法看到。
6,对于Android项目中的xml文件
AndroidManifest.xml:项目配置文件,涉及版本、Activity、过滤器、权限......内容比较多;
资源文件夹包括:layout文件是UI控件布局的设计文件、
menu和弹出菜单有关、
resources标签下包括:数组string-array、颜色color、字符串string、样式style
7,使用的library
比如ViewPager控件,是sdk\extras\android\support\v4\android-support-v4.jar中的组件;
8,暂未涉及的内容
未涉及到Intent、多个Activity之间的转换、Broadcast Receiver、Services、安全和许可