100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Android开发笔记(十五)淡入淡出动画TransitionDrawable

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

时间:2021-08-06 04:50:09

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。