文档章节

开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start

姬鑫
 姬鑫
发布于 2015/05/18 16:17
字数 631
阅读 2457
收藏 28

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中哪一模块用到的,后面随着逐步分分析应该会找到它的。


© 著作权归作者所有

共有 人打赏支持
姬鑫
粉丝 85
博文 54
码字总数 16632
作品 0
宁波
程序员
私信 提问
加载中

评论(12)

姬鑫
姬鑫

引用来自“os1028”的评论

引用来自“九洲北研”的评论

能不能加好友一起研究开源中国客户端代码
你研究的怎么样的了?加好友么

324386394加群
o
os1028

引用来自“九洲北研”的评论

能不能加好友一起研究开源中国客户端代码
你研究的怎么样的了?加好友么
out有点man
out有点man
非常感谢
溱
非常感谢
姬鑫
姬鑫

引用来自“alivebao”的评论

为什么是在动画结束之后才执行上传service?感觉动画开始的时候执行service,动画结束后执行跳转,这样效果会不会更好一些?
原则上,前后无所谓,毕竟服务是在后台执行的。放在前面只是提前了800ms做这件事罢了
alivebao
alivebao
为什么是在动画结束之后才执行上传service?感觉动画开始的时候执行service,动画结束后执行跳转,这样效果会不会更好一些?
J
JameBoy
最近也在研究,可以加个好友一起研究
Litter小强
Litter小强
分析的不错,最近也在研究这个App的思路
姬鑫
姬鑫

引用来自“九洲北研”的评论

能不能加好友一起研究开源中国客户端代码
274921407 欢迎学习讨论
姬鑫
姬鑫

引用来自“andrewhunter”的评论

怎么没有代码下载地址
http://git.oschina.net/oschina/android-app/tree/v2.2.1/
使用calabash测试开源中国Android客户端

Calabash-android是支持android的UI自动化测试框架,前面已经介绍过《中文Win7下成功安装calabash-android步骤》,这篇博文尝试测试一个真实应用:开源中国客户端。目的是和大家一起学习cal...

超爱fitnesse
2014/09/01
0
3
4.1.7 版本更新丨这有一份开源中国 APP 最新源码,请笑纳

是的,没错。 开源中国 v4.1.7 版本更新了。 程序猿们经过几个星期的紧张开发, 本次更新为大家带来了 0 项新功能。  氮素, 做了一些小调整, 资讯列表做了排序优化 你不仔细看是察...

王练
06/19
0
10
lihei12345/oschina_studio

android-app 开源中国社区 Android 客户端项目简析 注:本文假设你已经有Android开发环境 启动Eclipse,点击菜单并导入Android客户端项目,请确保你当前的Android SDK是最新版。 如果编译出错...

lihei12345
2014/04/21
0
0
[Android]开源中国源码分析——Activity

开源中国android版主要有3类activity,一个是启动界面Activity,一个是主界面Activity,其他作为一类是详细页面Activity。 1、启动界面Activity为AppStart.java类。 它在net.oschina.app目录...

亭子happy
2012/09/11
0
0
开源中国iOS客户端学习——序

说到这款开源软件就得提到她的娘家了--开源中国社区: 开源中国社区简介:开源中国 www.oschina.net 成立于2008年8月,是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT...

青云_K
2013/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Hive的三种Join方式

Hive中就是把Map,Reduce的Join拿过来,通过SQL来表示。 参考链接:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins Common/Shuffle/Reduce Join Reduce Join在Hiv......

GordonNemo
20分钟前
1
0
Spark学习记录(三)核心API模块介绍

spark ------------- 基于hadoop的mr,扩展MR模型高效使用MR模型,内存型集群计算,提高app处理速度。 spark特点 ------------- 速度:在内存中存储中间结果。 支持多种语言。Scala、Java、P...

我爱春天的毛毛雨
26分钟前
1
0
PHP5、PHP7安装

11月13日任务 11.10/11.11/11.12 安装PHP5 11.13 安装PHP7 PHP官网www.php.net 当前主流版本为5.6/7.1 cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2 tar z......

zgxlinux
27分钟前
1
0
React 项目结构和组件命名之道

摘要: > * 原文地址:[structuring projects and naming components in react](https://hackernoon.com/structuring-projects-and-naming-components-in-react-1261b6e18d76) > * 原文作者:......

阿里云官方博客
27分钟前
3
0
无维护地稳定运行了8 年的 Hyperic HQ

最近在诊断一个系统意外停机时, 发现一个8年前部署部署的Hypeirc HQ 4.2,已经免维护,稳定运行了8年多。提供了及时的诊断信息。单击右下角的蓝色泡泡,可显示报警信息。

MartinKing
41分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部