android动画之属性动画

android动画之属性动画 【android动画之属性动画】android 属性动画,顾名思意。即通过改变对象的属性来实现一些动画效果,它的使用范围已经不止于view,可以对任意有属性的对象进行操作,比如对某个值入alpha进行操作,可以实现逐渐消失的效果。属性动画中有两个很重要的类,ValueAnimator和ObjectAnimator。其中ObjectAnimator继承自ValueAnimator,是其子类。

  • 注意:只要是对象的属性有set和get方法,则这些属性都可以通过ObjectAnimator设置动画,而ValueAnimator则会给我们返回值,我们可以根据这个值设置任意属性
ValueAnimator
使用ValueAnimator设置动画可以更加个性化设置,按照自己的需求设置相应动画。它的主要原理是提供一系列的数供我们使用。
public void ValueAnim(final View view){ ValueAnimator intAnimator = ValueAnimator.ofInt(300, -300); intAnimator.setDuration(2000); intAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Override public void onAnimationUpdate(ValueAnimator animation) { Integer animatedValue = https://www.it610.com/article/(Integer) animation.getAnimatedValue(); Log.i("test"," animatedValue= "https://www.it610.com/article/+animatedValue); view.scrollTo(animatedValue, 0); } }); intAnimator.start(); }

android动画之属性动画
文章图片

效果如上图,logcat如下图,
android动画之属性动画
文章图片

打印出的数是从300~-300范围内的值。这一点对我们在实际项目中非常重要,比如说我像要一组从0到1渐变的数,在在安卓中做渐变动画是很常见的需求。我可以这样写。
private void startAnimator2() { ValueAnimator animator = ValueAnimator.ofFloat(0, 1); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Float animatedValue = https://www.it610.com/article/(Float) animation.getAnimatedValue(); Log.i("test", " animatedValue= "https://www.it610.com/article/+ animatedValue); } }); animator.setDuration(1000); animator.start(); }


可以看到我们得到了从0到1线性递增的数。当然,起始值和终止值我们都是可以自定义的。
ObjectAnimator
ObjectAnimator是属性动画中使用最简单的一种动画
public void rotateAnim(View view) { ObjectAnimator// .ofFloat(view, "rotationX", 0.0F, 180.0F)// .setDuration(500)// .start(); }

传入view可设置其旋转,ofFloat(Object target, String propertyName, float… values)方法。其中,第一个参数表示要设置动画的对象,第二个参数表示属性,后面不定参表示动画要改变的值的范围。所以,上面代码的意义是将对象旋转180度。
android动画之属性动画
文章图片

效果如上图.
只要是对象可以通过set方法设置的属性都可以设置此动画。此外,ObjectAnimator有很多方法,例如,ofArgb(int… values)可以设置颜色渐变动画,ofInt(int… values)可以设置大小,位置变化。ObjectAnimator是封装了ValueAnimator的类,这样使得其使用起来很方便。但是有一定的局限,即如前文说的限定条件。
差值器和估值器
说到动画不得不提差值器和估值器,即TimeInterpolator和TypeEvaluator。其中TimeInterpolator可以控制变化的速率,类似与物理中的“加速度”,控制变化的快慢。TypeEvaluator定义动画获取的ValueAnimator的值的类型。可以根据自己的需要重新这两个类,自定义相应的方法。差值器是一个值得花时间研究的东西。此处就不再做更深入的研究。下次有机会我们一起学习。
目录

  • android动画之属性动画
      • ValueAnimator
      • ObjectAnimator
      • 目录

    推荐阅读