今天第一次接触到属性动画。参考着
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38067475
的博客,自己学习下。
它的区别跟View Animation的区别现在还不是很清除,先跳过这个阶段,直接在代码中体验二者的不同吧。
一、ObjectAnimator
它的使用最简单,感觉跟View Animation相似,只是它的使用要比前者简单的多,一句代码就搞定了,看如下代码跟效果
ObjectAnimator.ofFloat(view, "rotationY", 0.0f, 360.0f). setDuration(2000) .start();
解释
ofFloat的参数的意义
view:需要添加动画的控件
"rotationY"-这个是动画效果(绕y轴旋转)(如果不是系统提供的动画样式,那么它不会报错,而是没有效果。但是,它的监听事件会执行。看下面介绍)
其他样式
"alpha"-透明度
0.0f(360.f)-是开始跟结束角度
监听事件
objectAnimator.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator arg0) { // TODO Auto-generated method stub Log.e("123", "arg0==="+arg0.getAnimatedValue()); } });
看打印结果
1 06-03 17:18:03.990: E/123(19763): arg0===1.0 2 06-03 17:18:04.004: E/123(19763): arg0===1.0 3 06-03 17:18:04.023: E/123(19763): arg0===0.9997773 4 06-03 17:18:04.042: E/123(19763): arg0===0.9991095 5 06-03 17:18:04.061: E/123(19763): arg0===0.99799716 6 06-03 17:18:04.081: E/123(19763): arg0===0.9964413
它其实就是实时监控透明度的变化(即使你的动画类型不存在,这个过程执行,只是界面上没有什么变化)
如果你想利用ObjectAnimator执行多条语句,你可以使用PropertyValuesHolder 类
如下方法
public void startAnimatorHode(View view){ PropertyValuesHolder pv1 = PropertyValuesHolder.ofFloat("alpha", 1.0f,0.0f); PropertyValuesHolder pv2 = PropertyValuesHolder.ofFloat("scaleX", 1.0f,0.0f); PropertyValuesHolder pv3 = PropertyValuesHolder.ofFloat("scaleY", 1.0f,0.0f); objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, pv1,pv2,pv3); objectAnimator.setDuration(2000); objectAnimator.start(); }
它会同时执行多条语句
2