文档章节

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

姬鑫
 姬鑫
发布于 2015/05/18 16:17
字数 631
阅读 2398
收藏 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
基于Google Flutter的开源中国客户端,支持Android与iOS

FlutterOSC 基于Google Flutter的开源中国客户端,支持Android和iOS。 码云戳这里 GitHub戳这里 关于Google Flutter Android扫码下载APK 请使用手机浏览器扫码下载,不要使用微信或者qq扫码 ...

我遇见谁_会有怎样的对白
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

angular指令监听ng-repeat渲染完成后执行自定义事件方法

今天工作中遇到需要用到ng-repeat遍历渲染完后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己创建自定义指令。 在ng-repeat模板实例内部会暴露出一些特殊属...

孟飞阳
43分钟前
1
0
URLEncoder和URLDecoder

public static void main(String[] args) { String str1 = "https://test1-life.pingan.com/ilifecore/productMall/loading.html?productId=8000000241&channelCode=XCX00001&productCode=00......

鬼才王
53分钟前
2
0
对象及变量的并发访问-第一篇

方法内部的变量为线程安全变量 “非线程安全”问题存在于“共享变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的。 package chaprer3;/**...

简心
53分钟前
1
0
程序媛眼中的程序猿原来是这样子的!

一直都想写一篇关于描述程序员的文章,但是一直没能开头,一来因为文笔不好,更主要的原因是貌似对程序员既熟悉又不熟悉,很怕写出来的是以偏概全,给大家造成对程序员的既定印象,不过,管他...

Java小铺
今天
1
0
bean标签

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 bean标签 bean标签中的init-method属性,该属性...

凯哥学堂
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部