Android属性动画-Property Animation(四) 组合动画

本文探讨如何在Android中使用AnimatorSet组合多个动画,并通过XML实现属性动画。 AnimatorSet允许同时或按顺序播放动画,而XML实现则方便在不同Activity复用。此外,还介绍了使用Animation Listeners进行动画监听。

(一)、使用AnimatorSet实现动画集

之前我们研究的都是一个动画一个动画的单独播放,而在很多时候,我么需要将几个动画,以某种逻辑顺序来执行。我们可以用AnimatorSet来组合各种各样的动画。

首先我们先来看这样一个动画:

这个动画集由{下落动画,改变背景颜色动画,改变字体颜色动画}组成的。他们是同时执行的


布局文件如下:



    
MainActiity如下:

public class MainActivity extends Activity {
	private Button mBrick;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        mBrick=(Button) findViewById(R.id.my_brick);
        mBrick.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//砖块下落的动画
				ObjectAnimator drop = ObjectAnimator.ofFloat(mBrick, "Y",0.0f,500.0f);
				drop.setDuration(3000);
				drop.setInterpolator(new BounceInterpolator());
				//改变砖块颜色的动画,"backgroundColor"这个属性是在View中的
				//Button继承自TextView继承自View,View中有对这个属性的setter/getter方法
				ObjectAnimator backGroundColor = ObjectAnimator.ofObject(mBrick, "backgroundColor",new ArgbEvaluator(), 0xccee4400,0xcc000000);
				backGroundColor.setDuration(3000);
				//改变字体颜色的动画,"textColor"这个属性是TextView中的
				//Button继承自TextView,TextView中有对这个属性的setter/getter方法
				ObjectAnimator textColor = ObjectAnimator.ofObject(mBrick, "textColor", new ArgbEvaluator(), 0xff000000,0xffffffff);
				textColor.setDuration(3000);
				//新建一个AnimatorSet实例
				AnimatorSet set = new AnimatorSet();
				//将这3个动画一起执行
				set.playTogether(drop,backGroundColor,textColor);
				//启动这个动画集
				set.start();
			}
		});
    }
}
我们还可以这样写:
//将这3个动画一起执行
set.play(drop).with(backGroundColor).with(textColor);
如果是同时执行的动画,我们这样写在一行是没有问题的,但是谷歌并不推荐我们这样写,因为一个动画集中可能还会牵扯到谁先执行,谁后执行,before,after什么的。如果都写在一行,首先系统是分辨不出到底谁先谁后的,其次我们自己也会乱的。所以我们应该分行写

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值