标签:
1启动界面的布局文件为app_start.xml ,对应的类文件为net.oschina.app 包下的AppStart.java。
2对于布局文件而言,因为只显示一张主题图片,因此布局简单直接设置背景图片。因为是启动界面,启动时会有短暂的卡顿,对于用户而言体验不好,因此在配置文件中自定义了style ,黑色 无标题 全屏(为什么选黑色的呢?是不是因为背景图图片是白的,衬托的更亮白呢?^_^)。设置了背景图片和无标题
<style name="Theme.AppStartLoad" parent="android:Theme.Black.NoTitleBar.Fullscreen">
<item name="android:windowBackground">@drawable/welcome</item>
<item name="android:windowNoTitle">true</item>
</style>
疑惑:
2.1既然已经设置了 parent="android:Theme.Black.NoTitleBar.Fullscreen",为什么还要用<item name="android:windowNoTitle">true</item>,另外在样式中设置了背景图片,为什么在布局文件中还要在设置下背景图片呢?难道重复的工作确实会有效的降低启动界面卡顿的问题吗?
2.2布局文件中为什么要设置android:gravity="bottom"这个属性呢,让图片居于控件底部?这个意图是什么???
3AppStart.java文件
3.1利用了动画中的View的渐变动画效果,从半透明到完全不透明,动画持续时间为800ms,动画结束后,完成日志的上传和界面的跳转。
3.2日志上传利用服务在后台完成的,无论上传成功还是失败,最后要记得关掉服务。成功后,将旧的日志文件删除,因为我们要进行新的一轮操作,至于在什么地方会保存日志,后面随着逐步分分析应该会找到它的。此处用到了第三方包https://github.com/loopj/android-async-http.
3.3在onResume函数中做了以下处理:主要是考虑APP版本升级后,当前的版本大于之前的版本,那么就将之前缓存的图片给清理掉,升级后缓存的图片很有可能没有用处了:此处引用了第三方包 http://kjframe.github.io/ 。此包确实强大,可惜的是API文档中没有对启动界面引用的preference的API的详细解释,因此本条分析完全是自己揣摩的。至于图片缓存是App中哪一模块用到的,后面随着逐步分分析应该会找到它的。
开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start
标签:
原文地址:http://my.oschina.net/jixin/blog/416284