补间动画知识点汇总

补间动画知识点汇总

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

补间动画分类:

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

补间动画使用:

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

TYPEXMLCODE
动态改变动画形式×
多动画结合

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)

参数解析

参数名称说明
fromXDeltafloat: 在动画的开始X坐标的变化
toXDeltafloat: 在动画的结束X坐标的变化
fromYDeltafloat: 在动画的开始Y坐标的变化
toYDeltafloat: 在动画的结束Y坐标的变化

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

参数解析

参数名称说明
fromXfloat: 在动画的开始水平扩展
toXfloat: 在动画的结束水平扩展
fromYfloat: 在动画的开始垂直扩展
toYfloat: 在动画的结束垂直扩展

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

参数解析

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

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

参数解析

参数名称说明
fromDegreesfloat: 在动画的开始时旋转的起始角度
toDegreesfloat:在动画的结束时旋转的终止角度
pivotXTypeint: 旋转中心的x轴取值参照方式 Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
pivotXValuefloat: 中心点x轴的取值 1.0 is 100%
pivotYTypeint: 旋转中心的y轴取值参照方式 Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
pivotYValuefloat: 中心点y轴的取值 1.0 is 100%

  • AlphaAnimation

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

参数解析

参数名称说明
fromAlphafloat: 在动画的开始时透明度 1.0 为全透明 0.0 为不透明
toAlphafloat: 在动画的结束时透明度 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); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值