android基础-视图动画(Animation)

2019-04-23  本文已影响0人  return_toLife

知识点

  1. 视图动画的类型
  2. 视图动画的特点
  3. 视图动画的实现方式

一、视图动画的类型

二、视图动画的特点

三、视图动画的实现方式

xml文件配置:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!--以下属性值也可以使用百分比数值-->
    <alpha
        android:fromAlpha="float"
        android:toAlpha="float" />
    <scale
        android:fromXScale="float"
        android:toXScale="float"
        android:fromYScale="float"
        android:toYScale="float"
        android:pivotX="float"
        android:pivotY="float" />
    <translate
        android:fromXDelta="float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float" />
    <rotate
        android:fromDegrees="float"
        android:toDegrees="float"
        android:pivotX="float"
        android:pivotY="float" />

    <!--以下为每种类型的动画都有的属性-->
    <translate
        android:duration="300"
        android:fillAfter="true"
        android:fillBefore="true"
        android:fillEnabled="true"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:repeatCount="2"
        android:repeatMode="restart"
        android:startOffset="200"
        >
    </translate>
</set>

公有方法详解:
android:duration
说明:动画持续时间, 默认值是0 (单位ms)

android:fillAfter
说明:表示动画结束后是否保留动画后的状态,true保留动画后状态,false恢复原来状态,默认值是false

android:fillBefore
说明:表示动画结束后是否保留动画前的状态,true恢复原来状态,false保留动画后状态,默认值是true

android:fillEnabled
说明:如果设置为true,将fillBefore设置考虑在内

android:interpolator
说明:设置动画的变化速率 即插值器,改变动画变换的速度,默认值是@android:anim/accelerate_decelerate_interpolator,即加速减速插值器,在动画开始和结束的时速度较慢,中间时候加速

android:repeatCount
说明:设置动画重复执行的次数 ,默认值是0

android:repeatMode
说明:设置动画重复的模式,其值可以有,restart( 1 ),表示顺序播放,reverse(2)表示重复的时候逆向播放

android:startOffset
说明:设置开始的延迟的时间(单位ms) ,默认值是0

(ps: xml文件中每一个set标签代表一个动画组合,动画组合里面也可再嵌套另外一个set组合)

代码实现

         //透明视图动画
        AlphaAnimation alphaAnimation=new AlphaAnimation(0,1);
        alphaAnimation.setDuration(3000);
        alphaAnimation.setStartOffset(300);
        alphaAnimation.setFillEnabled(true);
        alphaAnimation.setFillEnabled(true);
        view.startAnimation(alphaAnimation);

        /**
         * 动画集合 : true使用同一个插值器,false使用每个动画独自的插值器
         */
        AnimationSet animationSet=new AnimationSet(true);
        AlphaAnimation aAnim=new AlphaAnimation(0,1);
        alphaAnimation.setDuration(3000);
        alphaAnimation.setStartOffset(300);

        TranslateAnimation tAnim=new TranslateAnimation(0,200,0,300);
        tAnim.setDuration(3000);

        animationSet.addAnimation(aAnim);
        animationSet.addAnimation(tAnim);

        view.startAnimation(animationSet);

        //给动画设置监听
        RotateAnimation rAnim=new RotateAnimation(0,360);
        rAnim.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                
            }

            @Override
            public void onAnimationEnd(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

代码上都有注释,而且使用也很简单


总结

  1. 视图动画主要用于与用户没有交互的场景,比如一些进场,退场动画
  2. 视图动画的使用方式确实挺简单的,不过最好使用XML配置的方式,因为方便阅读以及可以复用
  3. 视图动画自己虽然已经使用过很长时间了,但是每次使用都总会查一些属性/方法,在这里总结一下基础,对于自己往进阶方向发展有一定帮助吧

参考文章

《android群英传》
android动画之View animation(视图动画)

上一篇下一篇

猜你喜欢

热点阅读