Android开发笔记(十五)淡入淡出动画TransitionDrawable
说到淡入淡出动画,可能大家会想到补间动画里面的AlphaAnimation,不过这个深浅动画只能对透明度做渐变效果,也就是只能对一个图形做深浅的颜色变换。如果我们想要从A图片逐渐变为B图片,也就是要实现淡入淡出(Fade-in and Fade-out)效果时,AlphaAnimation显然就不够用了。
幸好Andoird急我们之所急,想我们之所想,Animation不行,还有Drawable可以试试呀。前面的博文在图形章节中,博主提到了下列几种Drawable:
1、StateListDrawable:详见《 Android开发笔记(七)初识Drawable》
2、ShapeDrawable:详见《 Android开发笔记(八)神奇的shape》
3、NinePatchDrawable:详见《 Android开发笔记(九)特别的.9图片》
其实Drawable种类繁多,远不止这三种。如果认真阅读Android的开发文档,也许你已经发现了TransitionDrawable,就是TransitionDrawable能帮助我们实现淡入淡出的动画效果。
废话少说,直接上代码看看TransitionDrawable是怎么工作的。下面代码同时实现了AlphaAnimation和TransitionDrawable的使用,方便大家对比这两种动画效果。
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.widget.Button;
import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener {private ImageView iv_alpha;private AlphaAnimation alphaAnimation;private TransitionDrawable transitionDrawable;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn_play1 = (Button) findViewById(R.id.btn_play1);Button btn_play2 = (Button) findViewById(R.id.btn_play2);btn_play1.setOnClickListener(this);btn_play2.setOnClickListener(this);iv_alpha = (ImageView) findViewById(R.id.iv_alpha);//一开始先设置透明,这样图片不会显示,等点击按钮时再显示iv_alpha.setAlpha(0.0f);alphaAnimation = new AlphaAnimation(0.0f, 1.0f);alphaAnimation.setDuration(3000); //深浅动画持续时间alphaAnimation.setFillAfter(true); //动画结束时保持结束的画面}@Overridepublic void onClick(View v) {if (v.getId() == R.id.btn_play1) {iv_alpha.setImageResource(R.drawable.alpha_begin);iv_alpha.setAlpha(1.0f);iv_alpha.setAnimation(alphaAnimation);alphaAnimation.start();} else if (v.getId() == R.id.btn_play2) {//淡入淡出动画需要先设置一个Drawable数组,用于变换图片Drawable[] drawableArray = {getResources().getDrawable(R.drawable.alpha_begin),getResources().getDrawable(R.drawable.alpha_end)};transitionDrawable = new TransitionDrawable(drawableArray);iv_alpha.setImageDrawable(transitionDrawable);transitionDrawable.startTransition(3000);}}}
下面是淡入淡出动画的效果图
点击下载本文用到的淡入淡出动画的工程代码
点此查看Android开发笔记的完整目录
Android开发笔记(十五)淡入淡出动画TransitionDrawable相关推荐
- Android开发笔记(五十四)数据共享接口ContentProvider
ContentProvider 前面几节介绍了进程间通信的几种方式,包括消息包级别的Messenger.接口调用级别的AIDL.启动页面/服务级别的Notification,还有就是本节这个数据库级别 ...
- Android开发笔记(五十二)通知推送Notification
PendingIntent 准备工作复习一下PendingIntent,前面的博文< Android开发笔记(五十)定时器AlarmManager>已经提到了它.PendingIntent ...
- Android开发笔记(五十九)巧用传感器
传感器Sensor 传感器是Android用来感知周围环境以及运动信息的工具.因为具体的感应信息依赖于相关硬件,所以虽然Android提供了众多的感应器,但不是每部手机都能支持这么多感应器,恰恰相反, ...
- Android开发笔记(十七)GIF动画的实现GifAnimation
GIF在Windows上是常见的图片格式,主要用来播放短小的动画.但在手机上由于系统资源紧张,所以Android并没有直接支持GIF格式,如果在ImageView中放入一张gif文件,你会发现显示出来 ...
- Android开发笔记(五十七)录像录音与播放
媒体录制MediaRecorder MediaRecorder是Android自带的录制工具,通过操纵摄像头和麦克风完成媒体录制,既可录制视频,也可单独录制音频.其中对摄像头Camera的介绍参见&l ...
- Android开发笔记(五十三)远程接口调用AIDL
AIDL概述 AIDL全称是"Android Interface Definition Language",即Android的接口定义语言.AIDL用来协助开发者来处理进程间通信, ...
- Android开发笔记(五十八)铃声与震动
拖动条SeekBar SeekBar继承自进度条ProcessBar,有关ProcessBar的介绍见<Android开发笔记(四十九)异步任务处理AsyncTask>.SeekBar与P ...
- Android开发笔记(五十六)摄像头拍照
相机Camera Camera是直接操作摄像头硬件的工具类.常用的方法如下: getNumberOfCameras : 获取本机的摄像头数目 open : 打开摄像头,默认打开后置摄像头.如果有多个摄 ...
- Android开发笔记(五十五)手机设备基本操作
获取手机基本信息 手机的基本信息分两类,一类是与电话有关的信息,另一类是设备自身的信息. 与电话有关的信息可由TelephonyManager类获得,常用的参数与对应的方法如下所示: 网络运营商名称 ...
最新文章
- 错误linux autocof.h,【技巧】一种提高 [ 定位Linux内核编译错误 ] 效率的方法
- 选择排序_在N + 1场景中,使用@NamedEntityGraph更有选择地加载JPA实体
- 经常会提到的Java面试题
- [Music]若是每个人都彼此关怀
- java用递归删除文件夹_Java中通过递归调用删除文件夹下所有文件
- go语言基础到提高(1)-hello,world
- .net 把一个对象赋值给一个参数_Java:new一个对象的过程中发生了什么?
- 扎克伯格的中文夜:想要成功就不能放弃
- qt linux webservice,Qt实现访问WebService
- JavaScript -- arguments、apply 、call、bind
- 如何在Windows 10上安装MySQL数据库服务器8.0.19
- linux redis 数据迁移,redis cluster 迁移数据
- 《JavaScript高级程序设计2》学习笔记——BOM
- 十进制、二进制、八进制、十六进制对照表
- 车载一体机凯立德导航升级
- 学校计算机专业春联大全带横批,关于学校的春联带横批.doc
- Xilinx HydraMini试玩教程
- Go语言panic详解中
- 关于拿蓝桥杯省一这件事
- countupjs,一个有趣的数字翻滚动画