在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,一般情况下需要dp转px 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(); } }