前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发笔记(十五)淡入淡出动画TransitionDrawable

Android开发笔记(十五)淡入淡出动画TransitionDrawable

作者头像
aqi00
发布2019-01-18 10:31:27
1.9K0
发布2019-01-18 10:31:27
举报
文章被收录于专栏:老欧说安卓

说到淡入淡出动画,可能大家会想到补间动画里面的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的使用,方便大家对比这两种动画效果。

代码语言:javascript
复制
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;
	
	@Override
	protected 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);   //动画结束时保持结束的画面
	}

	@Override
	public 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开发笔记的完整目录

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年12月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档