Android TransitionDrawable实现一种可以用动画表示的Drawable。写一个例子。

package zhangphil.app;

import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //定义一个过渡drawable数组,最后一个drawable:drawables[n-1]是最终的显示形式
//第一个是开始
Drawable[] drawables=new Drawable[]{new ColorDrawable(Color.TRANSPARENT),new ColorDrawable(Color.RED)};
TransitionDrawable td=new TransitionDrawable(drawables); ImageView image = (ImageView) findViewById(R.id.imageView);
image.setImageDrawable(td); //交叉淡入样式
td.setCrossFadeEnabled(true); //开始执行动画,从设定的时间内,缓慢的从TransitionDrawable构造时候的数组第一个drawable(drawables[0])渐变成最后数组最后一个drawable(drawables[n-1])
//动画执行结束后,最终显示的是最后一个drawables[n-1]
td.startTransition(500);
}
}

如果要用xml实现TransitionDrawable,需要在drawable目录下新建一个xml代码文件,比如transition.xml,代码:

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/transparent" />
<item android:drawable="@android:color/holo_red_dark"/>
</transition>

上层Java代码变成:

TransitionDrawable transition = (TransitionDrawable)getResources().getDrawable(R.drawable.transition);
ImageView image = (ImageView) findViewById(R.id.imageView);
image.setImageDrawable(transition); transition.setCrossFadeEnabled(true);
transition.startTransition(500);

最新文章

  1. 体验Visual Studio 2015 Windows Forms应用程序开发与维护
  2. NDK学习二: NDK目录结构
  3. Nexus配置
  4. hdu 2094 产生冠军
  5. Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库
  6. 《Java程序猿面试笔试宝典》之Java与C/C++有什么异同
  7. [SDOI2014]旅行
  8. 全面了解TCP/IP到HTTP
  9. SNAT/DNAT
  10. Unity3D架构设计NavMesh寻路
  11. Java设计模式学习记录-单例模式
  12. vue复选框选中值获取
  13. 一图看懂hadoop MapReduce工作原理
  14. Java 程序内存分析
  15. LightOJ 1096 - nth Term 矩阵快速幂
  16. spoj1811 LCS - Longest Common Substring
  17. mysql数据库(二):查询(SELECT)
  18. lzugis—搭建属于自己的小型的版本控制SVN
  19. AWS CentOS7 实例修改主机名
  20. 记录一下今天犯得错误,public static function init()写成了public function initialize()

热门文章

  1. SecureCRT的配色方法
  2. getAttribute()方法的第二个参数
  3. 获取第三方软件的包名、入口Activity的类名
  4. TCP socket如何判断连接断开
  5. ssh 非root用户互信
  6. php bz2扩展安装
  7. vscode vue template 下 style 的样式自动提示 #bug 这个搞完vue语法esLint就又不好使了,ERR
  8. Asp.Net Core 入门(二)——Startup.cs做了什么
  9. 查看本机的ip地址
  10. faster rcnn的改进方向