美文网首页Android 进阶之路动画
在安卓中使用AnimationSet类同时执行多种动画效果

在安卓中使用AnimationSet类同时执行多种动画效果

作者: 雪纳瑞的哈士奇 | 来源:发表于2018-12-20 15:01 被阅读61次

    在安卓开发中,AnimationSet允许一个界面组件同时执行多种动画效果,例如一边旋转,一边移动,同时缩放尺寸。

    而AnimationSet类本身是Animation类的子类,而Animation类则是用于实现基础动画效果的。

    关于如何使用Animation类来实现基础动画效果,可以参考我的这篇文章:http://blog.csdn.net/freezingxu/article/details/70888766

    其实用AnimationSet同时执行多种动画效果特别简单,这个类顾名思义,就是多个Animation实例的一个集合,直接看代码:

     * 一次执行所有的动画效果
     * @param view
     */
    public void executeAllAnimations(View view){
        /*
         *  创建一个AnimationSet,它能够同时执行多个动画效果
         *  构造方法的入参如果是“true”,则代表使用默认的interpolator,如果是“false”则代表使用自定义interpolator
         */
        AnimationSet animationSet = new AnimationSet(true);
     
        /*
         *  创建一个半透明效果的动画对象,效果从完全透明到完全不透明
         */
        AlphaAnimation alphaAnimation = new AlphaAnimation(0,1);
     
        /*
         *  设置动画的持续时间
         */
        alphaAnimation.setDuration(3000);
     
        /*
         *  创建一个旋转动画对象
         *  入参列表含义如下:
         *  1.fromDegrees:从哪个角度开始旋转
         *  2.toDegrees:旋转到哪个角度结束
         *  3.pivotXType:旋转所围绕的圆心的x轴坐标的类型,有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、RELATIVE_TO_PARENT相对于父控件的坐标
         *  4.pivotXValue:旋转所围绕的圆心的x轴坐标,0.5f表明是以自身这个控件的一半长度为x轴
         *  5.pivotYType:y轴坐标的类型
         *  6.pivotYValue:y轴坐标
         */
        RotateAnimation rotateAnimation = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
     
        /*
         *  设置动画的持续时间
         */
        rotateAnimation.setDuration(3000);
     
        /*
         *  创建一个缩放效果的动画
         *  入参列表含义如下:
         *  fromX:x轴的初始值
         *  toX:x轴缩放后的值
         *  fromY:y轴的初始值
         *  toY:y轴缩放后的值
         *  pivotXType:x轴坐标的类型,有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、RELATIVE_TO_PARENT相对于父控件的坐标
         *  pivotXValue:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴
         *  pivotYType:y轴坐标的类型
         *  pivotYValue:轴的值,0.5f表明是以自身这个控件的一半长度为y轴
         */
        ScaleAnimation scaleAnimation = new ScaleAnimation(0,0.1f,0,0.1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
     
        /*
         *  设置动画的持续时间
         */
        scaleAnimation.setDuration(3000);
     
     
        /*
         *  创建一个移动动画效果
         *  入参的含义如下:
         *  fromXType:移动前的x轴坐标的类型
         *  fromXValue:移动前的x轴的坐标
         *  toXType:移动后的x轴的坐标的类型
         *  toXValue:移动后的x轴的坐标
         *  fromYType:移动前的y轴的坐标的类型
         *  fromYValue:移动前的y轴的坐标
         *  toYType:移动后的y轴的坐标的类型
         *  toYValue:移动后的y轴的坐标
         */
        TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0.5f);
     
        /*
         *  设置动画的持续时间
         */
        translateAnimation.setDuration(3000);
     
        /*
         *  将四种动画效果放入同一个AnimationSet中
         */
        animationSet.addAnimation(alphaAnimation);
        animationSet.addAnimation(rotateAnimation);
        animationSet.addAnimation(scaleAnimation);
        animationSet.addAnimation(translateAnimation);
     
        /*
         *  同时执行多个动画效果
         */
        view.startAnimation(animationSet);
    }
    --------------------- 
    作者:女儿控伪全栈老徐 
    来源:CSDN 
    原文:https://blog.csdn.net/freezingxu/article/details/70919263 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

        本文标题:在安卓中使用AnimationSet类同时执行多种动画效果

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