最近在看 Jammendo代码,打算将学习过程简单的记录下来,下面开始第一篇:

  打开Jammendo运行之后,出弹出一个对话框,跳过对话框之后,会有一个淡出界面跳转到首页效果的实现。那么这个效果是怎么实现的呢,其实就是Animation中动画淡出的效果——原理大概是layout不透明变成全透明这样一个原理。

  我这里用到的自定义endAnimation,是执行的动画效果,这里找到我事先写好的fade_out.xml,也就是一个简单的淡出效果实现:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="500"
/>
</set>

  fromAlpha为动画起始透明度,toAlpha是动画结束透明度,duration顾名思义也就是动画持续时间,当然有淡出也会有淡入,编写原理差不多,网上有相关代码,也可以自己去查找一下,很简单。

  OK,看完上面的动画xml文件之后。。下面开始看在Activity中代码应该如何编写

  在这里,我利用Handler和Runnable实现简单的动画淡出效果,android中动画效果是基于Animation来实现的,简单的说下实现的淡出效果实现

 public class SplashscreenActivity extends Activity {
private Animation endAnimation;
private Handler endAnimationHandler;
private Runnable endAnimationRunnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splashlayout);
endAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out);
endAnimation.setFillAfter(true); endAnimationHandler = new Handler();
endAnimationRunnable = new Runnable() {
@Override
public void run() {
findViewById(R.id.splashlayout).startAnimation(endAnimation);
}
}; endAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { } @Override
public void onAnimationRepeat(Animation animation) { } @Override
public void onAnimationEnd(Animation animation) {
// HomeActivity.launch(SplashscreenActivity.this);
// SplashscreenActivity.this.finish();
}
}); endAnimationHandler.removeCallbacks(endAnimationRunnable);
endAnimationHandler.postDelayed(endAnimationRunnable, 2000);
} }

SplashScreenActivity

  首先我定义了一个endAnimation,endAnimation是执行的动画效果,这里找到我事先写好的fade_out.xml,也就是一个简单的淡出效果实现,然后利用AnimationUtils.loadAnimation加载编写好的动画效果。

  在这里有一个SetFillAfter(true)函数,我搜了一下资料,大概解释是这样的:
  SetFillAfter()方法用于设置一个动画执行完毕后,View对象保留在中指的位置,如果设置为false,表示使能,也就是不会停留在终止位置,在这里我们设置为false。
  之后定义的一个endAnimationHadler和一个endAnimationRunnable,是具体调用这个动画的线程,Handler处理多线程的时候通常用Runnable接口,关于这个我也不太懂,就不多提。
  

  endAnimationHandler = new Handler();
  endAnimationRunnable = new Runnable() {
    public void run() {
findViewById(R.id.splashlayout).startAnimation(endAnimation);
}
};
具体的动画效果调用将会在endAnimationRunnable的Run()方法中实现,可以看到在run方法中,我利用findViewById找到了一个splashlayout,这个splashlayout是当前activity布局中layout资源的id,而不是整个xxx.xml文件的id。在之前的过程中,很长时间发现工程无法运行,后来发现我一直用的是R.layout.splashlayout。这里需要注意,我们添加的不是xml布局,而是xxx.xml文件中layout资源的id。如下所示:
 
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/splashlayout"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/splashtextview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world"
></TextView>
</LinearLayout>
 
  接下来就是为endAnimation实现一些onAnimationStart,onAnimationRepeat,onAnimationEnd回调方法,在onAnimationEnd方法中,也就是动画效果结束之后,我们可以执行一些自定的事件,例如页面的跳转等。
  上面过程完成之后,就可以调用Hadler来执行我们完成的动画淡出效果了,代码如下:
 endAnimationHandler.removeCallbacks(endAnimationRunnable);
endAnimationHandler.postDelayed(endAnimationRunnable, 2000);
OK,上面就是一个简单淡出效果的实现,写于4月6日
 

学习Jammendo代码的心路历程(一)简单的淡出效果实现的更多相关文章

  1. 学习Jammendo代码的心路历程(二)ViewFlipper数据的填充

    打开Jammendo进入到首页之后,会看到这样一个界面.可以看到下左效果,我们可以看到,他是上部分的ViewFlipper模块和下半部分的listview模块构成的,今天就简单的说一下Jammendo ...

  2. 新手学习FFmpeg - 调用API编写实现多次淡入淡出效果的滤镜

    前面几篇文章聊了聊FFmpeg的基础知识,我也是接触FFmpeg不久,除了时间处理之外,很多高深(滤镜)操作都没接触到.在学习时间处理的时候,都是通过在ffmpeg目前提供的avfilter基础上面修 ...

  3. javascript学习-原生javascript的小特效(简单的运动效果)

    前些日子看了个视频所以就模仿它的技术来为大家做出几个简单的JS小特效 一:运动特效(主要是通过改变元素的left,right,height,width,opacity来达到运动的效果) 我们今天做一个 ...

  4. G彩娱乐网一个程序员到一个销售高手的心路历程

    0.引言 我大学本科读的是理工科,后来毕业以后,我逐渐走上了程 序员的道路.每天面对电脑一行一行的敲代码,这被我们程序员们戏称为"搬砖头",因为我们所做的事跟民工搬砖头砌墙本质上是 ...

  5. 顶级项目孵化的故事系列——Kylin的心路历程【转】

    现在已经名满天下的 Apache Kylin,是 Hadoop 大数据生态系统不可或缺的一部分,要知道在 Kylin 项目早期,可是以华人为主的开源团队,一路披荆斩棘经过几年的奋斗,才在 Apache ...

  6. 一个C#开发者重温C++的心路历程

    不知道为什么,似乎很多人理解跑偏了,在这里我要说明一下. 首先,我并没有对C++语言有偏见,我只是单纯的在学习时,在理解时,对C++语言进行一些吐槽,我相信,很多学习C++的人,也会有类似的吐槽. 其 ...

  7. 一个C#开发编写Java框架的心路历程

    前言 这一篇絮絮叨叨,逻辑不太清晰的编写Java框架的的一个过程,主要描述我作为一个java初学者,在编写Java框架时的一些心得感悟. 因为我是C#的开发者,所以,在编写Java框架时,或多或少会带 ...

  8. VS2012+EF6+Mysql配置心路历程

    为了学习ORM,选择了EntityFramework,经历了三天两夜的煎熬,N多次错误,在群里高手的帮助下,终于成功,现在将我的心路历程记录下来,一是让自己有个记录,另外就是让其它人少走些弯路. 我的 ...

  9. 一个ETF基金经理的心路历程

    简介: 鹏华沪深300ETF拟任基金经理崔俊杰先生,金融工程专业管理学硕士,5年证券基金从业经验.2008年7月加盟鹏华基金管理有限公司,历任产品规划部产品设计师.量化投资部量化研究员,先后从事产品设 ...

随机推荐

  1. 一口一口吃掉Volley(一)

    欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/02/16/一口一口吃掉Volley(一)/ 本次编写的Volley教程现在看来其实已经跟不上时代了,但是技 ...

  2. PowerPoint超链接字体颜色修改、怎么去掉超链接下划线

    经常在做PPT幻灯片时会遇到这样一个问题,给文字加超链接后发现链接的颜色是蓝色的,而且还带有下划线,这种效果与主题的色彩搭配简直是太影响美观效果了.有没有什么办法可以去掉PPT中的超链接下划线?再将超 ...

  3. 开源中文分词工具探析(四):THULAC

    THULAC是一款相当不错的中文分词工具,准确率高.分词速度蛮快的:并且在工程上做了很多优化,比如:用DAT存储训练特征(压缩训练模型),加入了标点符号的特征(提高分词准确率)等. 1. 前言 THU ...

  4. Winfrom 提示消息框公共类

    1.Winfrom项目经常会使用到消息提示,一般都使用MessageBox.Show方法,但是像错误提示,询问提示,警告提示写起来就有点复杂了,并且后面几种提示都带有图标,但是MessageBox.S ...

  5. repeater绑定泛型list<string>

    菜鸟D重出江湖,依然是菜鸟,囧!言归正传—— 工作中遇到一个repeater绑定的问题,数据源是一个list<string> 集合,然后在界面上使用<%#Eval()%>绑定. ...

  6. 《C++ Primer》学习笔记 :命名空间的using声明

    最近在学C++,在<C++ Primer>第五版的3.1节中说到使用using声明来使用命名空间中的成员,<C++ Primer>中这样写道: 有了using声明就无须专门的前 ...

  7. wamp下安装php的xdebug调试的方法

    wamp下安装php的xdebug调试的方法 将下载好的php_xdebug-2.1.2-5.2-vc6.dll放在D:/wamp/php/ext/php_xdebug-2.1.2-5.2-vc6.d ...

  8. SQL Server-聚焦深入理解死锁以及避免死锁建议(三十三)

    前言 终于进入死锁系列,前面也提到过我一直对隔离级别和死锁以及如何避免死锁等问题模棱两可,所以才鼓起了重新学习SQL Server系列的勇气,本节我们来讲讲SQL Server中的死锁,看到许多文章都 ...

  9. 2017-3-10 SQL server 数据库 T--SQL语句

    创建数据库:create datebase  数据库名     注:数据库名不能为中文,不能数字开头,不能符号开头. 删除数据库:drop datebase 数据库名 创建表:create   tab ...

  10. [hihoCoder]1014 Trie水题

    最最最最最最最基本的Trie词频统计应用了. package trie; import java.util.Scanner; public class Main { public static voi ...