01_代码组件结构
-
按业务功能来划分模块
智能手表:
-
时间 模块
-
养生 模块
-
跑步测速 模块
-
收音机 模块
-
定位 模块
-
蓝牙接听电话
-
-
按代码类型划分模块
-
activity
-
service
-
broadcast receiver
-
content provider
-
dao(数据存取对象)
-
engine(业务层,不是service)
-
utils
-
自定义view
-
图示:
更新界面都是通过Adapter中的notify
命名规范:
-
界面组件命名规范
组件名的简称___布局文件名/activity名___作用名
如:
ProgressBar 在splash界面中,起到了显示进度:pb_splash_loading
02_splash界面的显示
-
splash界面的作用
-
展示LOGO
-
初始化数据
-
访问网络(耗时操作)
-
-
开发splash界面
-
定义布局显示splash界面
-
注意修改样式:
全屏,无标题
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
-
-
03_alpha动画
-
定义动画
AlphaAnimation 渐变动画
RotateAnimation 旋转动画
ScaleAnimation 比例动画
TranslateAnimation 位移动画
Animation 动画集
04_渐变,旋转动画
渐变和旋转动画的构造函数
动画集的使用:true动画插入器
05_网络读取json数据,并且解析成对象
-
访问网络监测版本变化
-
在tomcat中创建版本信息数据
-
IP 10.0.2.2 模拟器访问本机服务器的固定Ip
-
读取json数据获取最新的版本号,比对自己的版本
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
06_检查版本是否更新apk
sleep程序:
SystemClock.sleep(3000-(endTimeMills-mStartTimeMillis));
发送message:
// 弹出对话框,显示新版本的描述信息,让用户点击是否更新
Message msg = Message.obtain();
msg.what = SHOWUPDATEDIALOG;
handler.sendMessage(msg);
接收message的handler:
intent打开新界面:
Intent intent = new Intent(SplashActivity.this, HomeActivity.class);
startActivity(intent);
dialog的this:
07_下载新的apk
AS导入 开源库:
httpUtils:
instant run requires 'Tools|Android|Enable ADB integration' to be enabled
文件目录:
08_安装apk
-
子线程访问tomcat服务器获取json格式的数据
-
解析json数据
-
获取自己的版本
-
比较版本
-
版本一直直接进入主界面
-
版本不一致,对话框提示是否更新新版本(handler发消息)
-
如果取消,直接进入界面
-
如果是更新,下载新版本(xutils)
-
下载到sd卡
-
安装apk (拷贝上层源码 packageinstall的清单文件)
09_取消对话框处理
-
更新apk常见问题
-
用户返回对话框
-
禁用
-
-
定义取消的事件
11_apk的签名
adb的修复:
必须要保持签名一致
12_显示下载的进度
13_主界面的创建
自定义view的构造方法:
TextView文本滚动:
background和src设置图片的区别:
background是填充的
14_状态选择器
状态选择器不接受颜色,间接创建颜色
15_自定义对话框保存密码
.9.png 出问题
对话框的layout文件
建立工具类:MyConstants(接口),SpTools