android属性动画

在android中,一个类定义了成员变量,当成员变量实现了get(),set()方法的时候,我们就称它为属性,属性动画可以实现view动画的任何效果,与view动画的写法大同小异,

核心类:ObjectAnimator

 
public class MainActivity extends Activity {

    private RelativeLayout rl;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rl = (RelativeLayout) findViewById(R.id.rl);
//        rl.setRotation(float rotation);
//        rl.getRotation();
//        rl.setRotationX(float rotationX);//沿着X轴旋转
//        rl.setRotationY(float rotationY);//沿着Y轴旋转
        //rl:要做属性动画的对象;"rotation":做的是旋转属性动画,要做任何属性动画,只需要通过view对象的set()方法提示,复制粘贴过来就行
        // new float[]{90f,180f,270f,360f}旋转的角度数组
        ObjectAnimator oa = ObjectAnimator.ofFloat(rl,"rotation",new float[]{90f,180f,270f,360f});
        oa.setDuration(3000);//动画旋转一次的时间
        oa.setRepeatCount(ObjectAnimator.INFINITE);//动画旋转的次数:无限旋转
        oa.setRepeatMode(ObjectAnimator.RESTART);//动画旋转的模式:重新开始
        oa.start();
    }

    /**
     * 位移属性动画的集合
     */
    public void playAnimSet(){
        AnimatorSet as = new AnimatorSet();
//        rl.setTranslationX(float translationX);
//        rl.setTranslationY(float translationY);
        ObjectAnimator oa1 = ObjectAnimator.ofFloat(rl,"translationX",new float[]{90f,180f,270f,360f});//这里的单位是px,一般情况下需要dppx
        oa1.setDuration(3000);
        ObjectAnimator oa2 = ObjectAnimator.ofFloat(rl,"translationY",new float[]{-90f,-180f,-270f,-360f});
        oa2.setDuration(3000);
//      as.playSequentially(oa1,oa2);//动画顺序播放
        as.playTogether(oa1,oa2);//动画同事播放
        as.start();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值