个人首个AndroidApp开发小结(201509)

开发小结(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、安全和许可