美文网首页Android_UIAndroid
animation和animator的区别

animation和animator的区别

作者: _Youngjim | 来源:发表于2018-01-12 11:22 被阅读482次

该文不从实现或者绘画原理里区别animation和animator,主要是从特点,使用方法和形式来区别。

特点

简单来说,比起animation,animator能更精确得控制动画。

  • 动画的种类。前者只有透明度,旋转,平移,伸缩4中属性,而对于后者,只要是该控件的属性,且有setter该属性的方法就都可以对该属性执行一种动态变化的效果。
  • 可操作的对象。前者只能对UI组件执行动画,但属性动画几乎可以对任何对象执行动画(不管它是否显示在屏幕上)。
  • 动画播放顺序。在属性动画中,AnimatorSet正是通过playTogether()、playSequentially()、animSet.play().with()、before()、after()这些方法来控制多个动画协同工作,从而做到对动画播放顺序的精确控制

形式

创建方式.png 储存文件.png

xml的元素

  • animation
animation元素.png
  • animator
animator元素.png
<set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>

propertyValuesHolder:实现用法不一样而已,效果一样。所以不加研究。用到再做记录

使用方法

animation主要用于tween动画。

                //根据资源得到动画
        Animation rotateAnimation = 
                AnimationUtils.loadAnimation(this, R.anim.rotate_anim);
        //播放动画完成之后,保留动画最后的状态
        rotateAnimation.setFillAfter(true);
        //播放动画
        btnRotate.startAnimation(rotateAnimation);

animator主要用于属性动画。

ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f, 1f);  
animator.setDuration(5000);  
animator.start(); 
AnimatorSet animatorSet = new AnimatorSet();
        //移动
        ObjectAnimator ty = ObjectAnimator.ofFloat(btn, "translationY", 0,300);
        ty.setDuration(1000);
        //旋转
        ObjectAnimator ry = ObjectAnimator.ofFloat(btn, "rotationY", 0,1080);
        ry.setDuration(1500);
        //透明度
        ObjectAnimator alpha = ObjectAnimator.ofFloat(btn, "alpha", 1,0,0.5f,1);
        alpha.setDuration(2000);
        //缩放
        ObjectAnimator sx = ObjectAnimator.ofFloat(btn, "scaleX", 1,0.5f);
        alpha.setDuration(1000);
        //一起播放
//      animatorSet.playTogether(items);
        animatorSet.play(ry).with(sx).after(ty).before(alpha);
        animatorSet.start();

相关文章

网友评论

    本文标题:animation和animator的区别

    本文链接:https://www.haomeiwen.com/subject/wvgxoxtx.html