• Animations介绍及实例


    Animations的使用
    *一套实现动画的API
    1.什么是Animations
       实现动画效果
    2.Animations的分类
       1)TweenedAnimations
            提供了旋转,移动,伸展,和淡出等等效果
       a.Alpha:淡入淡出效果
       b.Scale:缩放效果
       c.Rotate:旋转效果
       d.Translate:移动效果
       2)Frame-by-FrameAnimations
            创建一个Drawable序列,可以按照时间间歇一个个的显示
    3.Animations的使用方法(一)代码实现
    1)使用TweenedAnimations的步骤
         a.创建一个AnimationSet对象
            可以把几个动画对象放在一起
         b.根据需要创建相应的Animation对象
         c.根据软件的动画的需求,为Animation对象设置相应的数据
         d.将Animation对象添加到AnimationSet对象当中
         e.使用控件对象开始执行AnimationSet
    2)Alpha效果实现(淡入淡出)
         /**创建一个AnimationSet对象*/
         AnimationSet animationSet = 
             new AnimationSet(true);
        /**创建一个AlphaAnimation对象*/
        AlphaAnimation alphaAnimation = 
            new AlphaAnimation(1, 0);
        /**设置动画执行的时间*/
         alphaAnimation.setDuration(1000);
      /**将AlphaAnimation对象添加到AnimationSet中*/
        animationSet.addAnimation(alphaAnimation);
        /**使用image的方法开始执行动画*/
       image.startAnimation(animationSet);     
    3)Rotate效果实现(旋转效果)
        重要的地方就是其构造方法:
        RotateAnimation rotateAnimation = 
                new RotateAnimation(
               /**起始角度*/
               0, 
               /**终止角度*/
               360, 
               /**设置旋转的圆心*/
               pivotX,
               pivotY);
       pivotX,pivotY是设置旋转的圆心
       设置有三种方式:
       a.Animation.ABSOLUTE
       b.Animation.RELATIVE_TO_SELF
        内轴:例如:如果是pivotX为0.5pivotY为0,则圆心的位置就是在图片宽度一半的位置
        外轴:例如:如果是pivotX为0.5pivotY为0.5,则圆心的位置就是在图片的几何中心位置
       c.Animation.RELATIVE_TO_PARENT
    4)translate效果实现(移动效果)
         重要的地方就是其构造方法:
                            TranslateAnimation translateAnimation = new TranslateAnimation(
                               /**设置X方向的起始和终止位置*/
                               Animation.RELATIVE_TO_SELF,0f,
                               Animation.RELATIVE_TO_SELF,0.5f,
                               /**设置Y方向的起始和终止位置*/
                               Animation.RELATIVE_TO_SELF,0f,
                               Animation.RELATIVE_TO_SELF,1f);
    5)Alpha的淡入淡出效果
        重要的地方就是其构造方法:
                        /**
                     * 创建AlphaAnimation对象
                     *  其构造方法是有两个参数
                     *  1代表的是完全不透明
                     *  0代表的是完全的透明
                     *  其方法是表示从完全不透明到完全透明的渐变过程
                     */
                    AlphaAnimation alphaAnimation = 
                        new AlphaAnimation(1, 0);
    6)Scale的缩放效果
        重要的地方就是其构造方法:
                         ScaleAnimation scaleAnimation = 
                          new ScaleAnimation(
                                  /**横纵坐标变到以前的0.1*/
                                  1,0.1f,1,0.1f,
                                  /**设置缩放的旋转轴*/
                                  Animation.RELATIVE_TO_SELF,0.5f,
                                  Animation.RELATIVE_TO_SELF,0.8f);
    4.Animation的通用属性
       这里设置的animationSet的通用属性
                    /**设置动画执行的时间*/
                    animationSet.setDuration(1000);
                    /**动画执行完毕后,停留在控件结束的状态*/
                    animationSet.setFillAfter(true);
                    /**动画执行完毕后,停留在控件开始的状态*/
                    animationSet.setFillBefore(false);
                    /**设置动画执行之前的等待时间*/
                    animationSet.setStartOffset(2000);
                    /**设置动画的重复执行次数*/
                    animationSet.setRepeatCount(3);
    5.Animation的使用(二)xml实现
       使用步骤:
       a.在res文件夹下创建一个名为anim的文件夹
       b.创建xml文件,并首先加入set标签,该标签为
       <set  xmlns:android="http://schemas.android.com/apk/res/android"
               android:interpolator="@android:anim/accelerate_interpolator">
       </set>
       c.在标签中加入rotate  alpha  scale  translate的配置文件
       d.在代码中使用AnimationUtils中装载xml文件,并生成Animation对象
       核心实现代码:
                       Animation animation = AnimationUtils.loadAnimation
                    (MainActivity.this, R.anim.scale);
                    image.startAnimation(animation);
    分别实现的xml文件如下:
    1)Rotate的xml布局:
        <rotate
          /**变换角度*/
          android:fromDegrees="0"
          android:toDegrees="360"
          android:pivotX="50%"
          android:pivotX="50%"
          android:duration="3000"
          />
    2) Alpha的xml布局
        <alpha
           android:fromAlpha="1"
           android:toAlpha="0"
           android:startOffset="500"
           android:duration="500"
          />
    3)Scale的xml布局
          <scale
         android:fromXScale="1"
         android:toXScale="0"
         android:fromYScale="1"
         android:toYScale="0"
         android:pivotX="50%"
         android:pivotY="50%"
         android:duration="3000"
       />
    4)Translate的xml布局实现
        <translate
          android:fromXDelta="50%"
          android:toXDelta="100%"
          android:fromYDelta="0%"
          android:toYDelta="100%"
          android:duration="2000"
        />
    注意:属性android:pivotX的值共有三种设置方法
             a.android:pivotX="50"使用绝对位置定义
         b.android:pivotX="50%"相对于控件本身定位
         c.android:pivotX="50%p"相对于父控件定位
    6.Animation的使用(三)
    1)AnimationSet的使用方法
         AnimationSet继承了Animation,包含一系列的Animation对象
    2)Interpolator的使用方法
         定义了动画变换速率
         <?xml version="1.0" encoding="utf-8"?>
    <set  xmlns:android="http://schemas.android.com/apk/res/android"
           /**逐渐加速*/
          android:interpolator="@android:anim/accelerate_interpolator"
          /**如果此处是true下面动画都按这个速率*/
          /**如果此处是false下面动画都需要分别设置*/
          android:shareInterpolator="true">
         <translate
          android:fromXDelta="50%"
          android:toXDelta="100%"
          android:fromYDelta="0%"
          android:toYDelta="100%"
          android:duration="2000"
          android:interpolator="@android:anim/linear_interpolator"
        />
        <alpha
           android:fromAlpha="1"
           android:toAlpha="0"
           android:startOffset="500"
           android:duration="500"
           android:interpolator="@android:anim/accelerate_interpolator"
          />
        <scale
         android:fromXScale="1"
         android:toXScale="0"
         android:fromYScale="1"
         android:toYScale="0"
         android:pivotX="50%"
         android:pivotY="50%"
         android:duration="2000"
         android:interpolator="@android:anim/cycle_interpolator"
         />
       <rotate
          android:fromDegrees="0"
          android:toDegrees="360"
          android:pivotX="50%"
          android:pivotY="50%"
          android:duration="3000"
          android:interpolator="@android:anim/accelerate_decelerate_interpolator"
       />
    </set>
    速率变换的分类:
    a.AccelerateDecelerateInterpolator在开始和结束时
       速率改变比较慢,在中间的时候加速
    b.AccelerateInterpolator在开始时速率改变比较慢,在中间的时候加速
    c.CycleInterpolator动画循环播放特定的才次数,速率沿着正弦曲线
    d.DecelerateInterpolator在动画开始的地方变换比较慢,然后开始
       减速
    e.LinearInterpolator动画以均匀的速率改变
    在xml可以配置的速率属性:
                accelerate_decelerate_interpolator  加速-减速动画
                accelerate_interpolator        加速-动画
                decelerate_interpolator        减速- 动画
    3)Frame-By-Frame Animations的使用方法
         核心代码:
                    /**为图片设置资源*/
                    image.setBackgroundResource(R.drawable.anim_ghost);
                    /**得到动画*/
                    AnimationDrawable animationDrawable = 
                        (AnimationDrawable)image.getBackground();
                    /**开始执行动画*/
                    animationDrawable.start();
          xml配置:
          在res/drawable下建立一个xml文件
          比如我们叫anim_ghost.xml
          <?xml version="1.0" encoding="utf-8"?>
      <animation-list 
       xmlns:android="http://schemas.android.com/apk/res/android"
       androidneshot="false">
       <item 
          android:drawable="@drawable/g1"
          android:duration="1000"   
        />
       <item 
          android:drawable="@drawable/g2"
          android:duration="1000"   
        />
       </animation-list>
    7.Animation高级使用
       LayoutAnimationController,为Layout中的控件,
       或者是一个ViewGroup控件设置动画效果
       1)ListView与Animation结合使用
        步骤:
        a.在res/anim当中创建一个新文件,名为
           list_anim_layout.xml文件
           为整个layout设置动画效果
            <layoutAnimation
             xmlns:android="http://schema.android.com/apk/res/android"
             android:delay="5"
             android:animationOrder="random"
             android:animation="@anim/list_anim"/>
            b.设置一个动画文件
           <?xml version="1.0" encoding="utf-8"?>
               <set  xmlns:android="http://schemas.android.com/apk/res/android"
                 android:interpolator="@android:anim/accelerate_interpolator">
                <rotate
                  android:fromDegrees="0"
                  android:toDegrees="360"
                  android:pivotX="50%p"
                  android:pivotY="50%p"
                  android:duration="3000"
                 />
                 </set>
        c.在布局文件中为ListView添加如下配置
           android:layoutAnimation="@anim/list_anim_layout"
       2)LayoutAnimationController的使用
           a.创建一个Animation对象
              加载xml文件的方式,或者直接使用Animation进行new
           b.创建LayoutAnimationController对象
              LayoutAnimationController lac = new 
              LayoutAnimationController(animation)
           c.设置控件显示的顺序
           lac.setOrder(LayoutAnimationController.ORDER_NORMAL) 
           d.为ListView设置LyaoutAnimationController属性
           listView.setLayoutAnimation(lac);
       3)AnimationListener的使用方法
            主要包含三个方法:
          /**动画效果结束时调用*/
        a.onAnimationEnd(Animation animation)
          /**动画效果重复时调用*/
        b.onAnimationRepeat(Animation animation)
         /**动画开始时调用*/
        c.onAnimationStart(Animation animation)
           主要是添加控件和删除控件的实现
  • 相关阅读:
    C#类头部声明样式
    VisualStudio使用技巧及快捷键
    #使用ListView更新数据出现闪烁解决办法
    获取公网IP地址
    JArray数组每个JObject对象添加一个键值对
    部署网站出现System.ServiceModel.Activation.HttpModule错误
    MYSQL存储引擎的比较
    数据库索引原理(转载)
    皮尔逊相关系数
    进程与线程
  • 原文地址:https://www.cnblogs.com/renyuan/p/2553955.html
Copyright © 2020-2023  润新知