补间动画知识点汇总

补间动画知识点汇总

  • 补间动画知识点汇总
    • 补间动画分类
    • 补间动画使用
      • XML中使用补间动画
      • code中使用补间动画
      • 补间动画常用构造函数参数介绍
    • 补间动画的扩展
      • 插值器
        • 种类
        • 使用

android的动画分为三大类:补间动画、帧动画、属性动画。
本篇主要介绍补间动画 后续会有其他动画的详细介绍

补间动画分类:

动画分类 简述
TranslateAnimation 移动补间动画
ScaleAnimation 缩放补间动画
RotateAnimation 旋转补间动画
AlphaAnimation 透明补间动画

补间动画使用:

补间动画的使用通常有两种方式:XML属性定义 & Code中实例化。

TYPE XML CODE
动态改变动画形式 ×
多动画结合

XML中使用补间动画

    <set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">

     <alpha 
         android:fromAlpha="1" 
         android:toAlpha="0"
         android:duration="2000"/>

     <scale android:fromXScale="1.0"
        android:toXScale="0"
        android:fromYScale="1.0"
        android:toYScale="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="true"
        android:duration="2000"/>

    <translate 
        android:fromXDelta="0"
        android:toXDelta="130"
        android:fromYDelta="0"
        android:toYDelta="-80"
        android:duration="2000"/>

    <rotate 
        android:fromDegrees="0"
        android:toDegrees="360"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="2000"/>
set>

在res/anim下新建 my_tween_anim.xml , 上图所实现的是4个效果混合之后的动画,最外层由set标签包裹。若单实现一种,直接将set标签删除,撸上自己需要的动画效果即可。

imgButton = findViewById("R.id.img")
imgButton.startAnimation(AnimationUtils.loadAnimation(this,R.anim.scale_shopcart));

从code中调用就比较简单了
View.startAnimation( Animation animation ) 控件开始动画;
AnimationUtils.loadAnimation( Context context ,@AnimRes int id );


code中使用补间动画

    //实例化动画
    Animation  animationTrans = new TranslateAnimation(0,50,0,50); //位移动画
    Animation animationScale = new ScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//缩放动画
    //剩余动画就不一一列举了,下方会有参数的详解......

    //使用动画集合
    AnimationSet animationSet = new AnimationSet(true);
    animationSet.addAnimation(animationTrans);
    animationSet.addAnimation(animationScale );
    //控件开始动画
    imgButton = findViewById("R.id.img")
    imgButton.startAnimation(AnimationUtils.loadAnimation(this,R.anim.my_tween_anim));

补间动画常用构造函数参数介绍:


  • TranslateAnimation
    Added in API level 1
    TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

参数解析

参数名称 说明
fromXDelta float: 在动画的开始X坐标的变化
toXDelta float: 在动画的结束X坐标的变化
fromYDelta float: 在动画的开始Y坐标的变化
toYDelta float: 在动画的结束Y坐标的变化

  • ScaleAnimation
    Added in API level 1
    ScaleAnimation (float fromX, float toX, float fromY, float toY)

参数解析

参数名称 说明
fromX float: 在动画的开始水平扩展
toX float: 在动画的结束水平扩展
fromY float: 在动画的开始垂直扩展
toY float: 在动画的结束垂直扩展

  • RotateAnimation
    Added in API level 1
    RotateAnimation (float fromDegrees, float toDegrees)

参数解析

参数名称 说明
fromDegrees float:在动画的开始时旋转的起始角度
toDegrees float: 在动画的结束时旋转的终止角度

  • RotateAnimation (float fromDegrees,
    float toDegrees,
    int pivotXType,
    float pivotXValue,
    int pivotYType,
    float pivotYValue)

参数解析

参数名称 说明
fromDegrees float: 在动画的开始时旋转的起始角度
toDegrees float:在动画的结束时旋转的终止角度
pivotXType int: 旋转中心的x轴取值参照方式 Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
pivotXValue float: 中心点x轴的取值 1.0 is 100%
pivotYType int: 旋转中心的y轴取值参照方式 Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
pivotYValue float: 中心点y轴的取值 1.0 is 100%

  • AlphaAnimation

Added in API level 1
AlphaAnimation (float fromAlpha, float toAlpha)

参数解析

参数名称 说明
fromAlpha float: 在动画的开始时透明度 1.0 为全透明 0.0 为不透明
toAlpha float: 在动画的结束时透明度 1.0 为全透明 0.0 为不透明

补间动画的扩展:

插值器

插值器是描述动画执行中的变化的控制器
动画可先快后慢,先慢后快,多次执行……具体在下方

种类

参数名称 说明
acceleratedecelerateinterpolator 一个插入器的速度变化缓慢开始和结束但加速通过中间。
accelerateinterpolator 一个插入器变化的速度开始缓慢,然后加速。
anticipateinterpolator 一个插入器的变化开始后退然后前进。
anticipateovershootinterpolator 一个插入器,开始后退然后前进和变化超过目标值,最后回到最后的价值。
baseinterpolator 抽象类是扩展默认情况下插入器。
bounceinterpolator 一个插入器,反弹结束时的变化。
cycleinterpolator 重复动画为指定数量的周期。
decelerateinterpolator 一个插入器,变化的速度开始快,然后减慢。
fastoutlinearininterpolator 插入器对应fast_out_linear_in。
fastoutslowininterpolator 插入器对应fast_out_slow_in。
linearinterpolator 一个插入器,变化的速度是恒定的
linearoutslowininterpolator 插入器对应linear_out_slow_in。
overshootinterpolator 一个插入器的变化将向前和过激的最后一个值然后回来。
pathinterpolator 一个插入器,可以遍历路径扩展从(0,0)点(1,- 1)。

使用

XML:

    android:interpoplator="@android:anim/accelerate_interpoplator"

CODE:

    mAnimatorSet.setInterpolator(xxxxxx); 

你可能感兴趣的:(Android)