开源中国安卓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中清理一下项目缓存, 要不然可能无法即时显示改动后的界面.

开源中国安卓client源代码学习(一) 渐变启动界面的更多相关文章

  1. Oschina 安卓client源代码学习之中的一个

    今天主要研究一下两个功能 (1)双击返回键退出程序 (2)接近完美地退出程序 (1) 在非常多应用程序里都有一个功能,就是点击返回键,之后提示你再点击返回键就退出程序. 之前一直非常好奇这是怎么实现的 ...

  2. [Android]开源中国源码分析之一---启动界面

    开源中国android端版本号:2.4 启动界面: 在AndroidManifest.xml中找到程序的入口, <activity android:name=".AppStart&qu ...

  3. 开源中国iOS客户端学习

    开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html ...

  4. Ninesky源代码从Codeplex迁移到开源中国

    原来Ninesky代码一直发在Codeplex.com上,最近两三个星期了代码一直迁入不上去,网站访问也经常出错. 所以把代码放到开源中国去了,项目地址https://git.oschina.net/ ...

  5. 开源中国IOSclient

    我想看看别人开发项目.通过吸收经验,然后找到开放的中国,丹尼尔一些网上也开发了自己的开源在中国client 在网上看到很多网友说,不能下载东西像安装,我带来了我的方式,其中的一些朋友想帮忙. http ...

  6. 2014 年最热门的国人开发开源软件 TOP 100 - 开源中国社区

    不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外的认可.中国是 ...

  7. 使用calabash测试开源中国Android客户端

    Calabash-android是支持android的UI自动化测试框架,前面已经介绍过<中文Win7下成功安装calabash-android步骤>,这篇博文尝试测试一个真实应用:开源中 ...

  8. 仿知乎安卓client滑动删除撤销ListView

    标签(空格分隔): Android 新版的知乎安卓client有一个有趣的功能,就是在一个item里.向右滑动时整个item会越来越透明,滑动到一半时,整个item就不见了.放开手指就是删除.删除后还 ...

  9. iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇

    iOS超全开源框架.项目和学习资料汇总--数据库.缓存处理.图像浏览.摄像照相视频音频篇 感谢:Ming_en_long 的分享 大神超赞的集合,http://www.jianshu.com/p/f3 ...

随机推荐

  1. C#获取磁盘列表与信息

    方法1:使用Environment //获取当前计算机逻辑磁盘名称列表 String[] drives = Environment.GetLogicalDrives(); Console.WriteL ...

  2. ADB错误“more than one device and emulator”(转)

    当我连着手机充电的时候,启动模拟器调试,执行ADB指令时,报错.C:\Users\gaojs>adb shellerror: more than one device and emulatorC ...

  3. 设计模式:模版模式(Template Pattern)

    android中的Activity框架,View框架中大量的on函数基本上都应用到了Template模式,掌握这一模式对于理解这些框架大有裨益. 模版模式 又叫模板方法模式,在一个方法中定义一个算法的 ...

  4. inline-block元素的空白间距解决方法

    方法1 <ul><li>item1</li><li>item2</li><li>item3</li><li&g ...

  5. IO流文件字符输入输出流,缓冲流

    由于字节输入输出流在操纵Unicode字符时可能有乱码现象 于是就有了操作字符的输入输出流 Reader ,Writer和他们的子类FileReader,FileWrite(其实就是用来辅助构造的 W ...

  6. 关于laravel框架的Auth::attempt验证失败

    按照官方文档进行认证 发现不管怎么样都是失败 if (Auth::attempt(array('email' => $email, 'password' => $password), tr ...

  7. Windows 中JDK安装配置教程

    1.准备工作 a.因为Java JDK区分32位和64位系统,所以在安装之前必须先要判断以下我们的系统为多少位系统.右键计算机-属性查看,我安装的是64位 b.下载JDK,地址:http://www. ...

  8. Python自动化运维之3、函数、lambda、递归

    一.函数 函数的基础概念: 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基本结构 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在 ...

  9. MVC 中集成 AngularJS1

    在 ASP.NET MVC 中集成 AngularJS(1)   介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 R ...

  10. spark1.1.0源码阅读-executor

    1. executor上执行launchTask def launchTask( context: ExecutorBackend, taskId: Long, taskName: String, s ...