开源中国安卓client源代码学习(一) 渐变启动界面


准备学习安卓开发, 看到网上有人推荐开源中国安卓client的源代码, 说里面包括了大部分技术, 于是准备好好研究研究. 特开通此系列博客来记录学习过程. 因为是在学习, 经验不足, 里面肯定有非常多不正确的地方, 望大家指正.

这里下载源代码包,开发环境为Linux下Eclipse,导入源代码后有可能会出现android.webkit.CacheManager找不到的错误, 原因是这个类在4.0以上版本号的SDK被删除了, 仅仅要下载4.0版本号的SDK使用就可以. 因为google被墙, 使用SDK管理器可能无法下载, 能够在网上直接下载4.0的SDK, 将目录名字改为android-15, 放到android-sdk的platforms目录下.

首先是渐变的启动界面.

从AndroidManifest.xml中定位到程序入口为 /oschina-android-app/src/net/oschina/app/AppStart.java, AppStart为启动类, onCreate方法为入口方法,

final View view = View.inflate(this, R.layout.start, null); //由layout目录下的start.xml文件定义启动界面视图
setContentView(view); // 设置activity显示的视图

start.xml 文件内容例如以下:

<?

xml version="1.0" encoding="utf-8"?

>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/app_start_view"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom"
android:background="@drawable/start_background"> // 渐变使用的图片, 但这里的start_background是个xml文件, 以更精确的控制图片
</LinearLayout>

start_background.xml内容例如以下

<?xml version="1.0" encoding="utf-8"?

>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/welcome" // 启动图片, welcome.png
android:scaleType="fitStart"/> // 缩放类型

利用AlphaAnimatio类来实现启动界面的渐变效果

    AlphaAnimation aa = new AlphaAnimation(0.3f,1.0f); // 渐变透明度范围
aa.setDuration(2000); // 持续时间
view.startAnimation(aa); // 启动渐变
aa.setAnimationListener(new AnimationListener()
// 监听事件, 设置渐变開始, 反复, 结束时的处理
{
@Override
public void onAnimationEnd(Animation arg0) {
redirectTo(); // 渐变结束后进入到主界面
}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationStart(Animation animation) {} });

以下的redirectTo函数, 其功能就是新开一个activity, 在当中打开主界面, 而且结束当前activity

 private void redirectTo(){
Intent intent = new Intent(this, Main.class); // Main 是一个继承了Activity的类
startActivity(intent); // 在新的activity中打开主界面
finish(); // 结束当前activity
}

这个类中另外两个函数checkgetTime都不重要, 略过.

tips: 改动启动界面的图片资源后, 要在eclipse的project-clean中清理一下项目缓存, 要不然可能无法即时显示改动后的界面.

最新文章

  1. css学习笔记 3
  2. 将ubuntu的id_rsa秘钥转为putty的ppk格式
  3. HTTP/HTTPs要点
  4. 用SugarORM快速开发需要同步和保存大量数据的Android互联网客户端
  5. PAT天梯赛练习题 L3-010. 是否完全二叉搜索树(完全二叉树的判断)
  6. wpf的datepicker处理
  7. getScript 按需加载javascript
  8. Sublime Text 3 代码格式化插件推荐 CodeFormatter
  9. openerp import l field size limit
  10. POJ3687 Labeling Balls(拓扑)
  11. 编译TWRP-recovery教程及源码地址
  12. JVM内存结构、垃圾回收那点事(转)
  13. Java之String类的使用细节
  14. java值传递与引用传递实例
  15. Retrofit 2.0 超能实践(一),okHttp完美支持Https传输
  16. 入坑C++之vs 新建C++项目
  17. mysql trigger
  18. CH 3101 - 阶乘分解 - [埃筛]
  19. 使用vue自定义简单的消息提示框
  20. 习题 6 字符串(string)和文本

热门文章

  1. js和php判断当前是否为微信浏览器?
  2. java: cannot execute binary file
  3. 系统管理中 bash shell 脚本常用方法总结
  4. Dapper事务操作
  5. C#01
  6. 控件真的很好用,突然感觉自己以前研究Discuz!NT366源码的方式很2了
  7. MySQL Connector/Python 安装、测试
  8. 兄弟连面试宝典php
  9. Android Framework------之ActivityManagerService与Activity之间的通信
  10. Filter及FilterChain的使用详解