美文网首页
Android View动画

Android View动画

作者: digtal_ | 来源:发表于2018-07-25 16:49 被阅读35次

    平移动画

    1.xml方式,在res下新建anim的文件夹

    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="0"
        android:toXDelta="80"
        android:fromYDelta="0"
        android:toYDelta="80"
        android:fillAfter ="true"
        android:duration="800">
    

    2.代码

        public void TransAnim(View view){
            Animation animation = AnimationUtils.loadAnimation(this, R.anim.trans_anim);
            mTextView.startAnimation(animation);
        }
    

    3.效果
    toXDelta和toYDelta如果为数值80时表示向右和向下同时平移80px


    ezgif-4-d8cd66a3b9.gif
    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="0"
        android:toXDelta="180%"
        android:fromYDelta="0"
        android:toYDelta="80%"
        android:fillAfter ="true"
        android:duration="800">
    

    toXDelta和toYDelta如果数值后面加上%号表示移动的距离为该控件宽高的百分之多少,如180%为控件的1.8倍宽度的距离


    ezgif-4-0362cdc727.gif
    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="0"
        android:toXDelta="50%p"
        android:fromYDelta="0"
        android:toYDelta="50%p"
        android:fillAfter ="true"
        android:duration="800">
    

    toXDelta和toYDelta如果数值后面加上%p表示移动的距离为父控件宽高的百分之多少,如50%p为父控件的0.5倍宽度的距离


    ezgif-4-d2ffbfd16d.gif

    透明度动画

    <?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromAlpha="1"
        android:toAlpha="0.3"
        android:fillAfter ="true"
        android:duration="800">
    </alpha>
    
        public void TransAnim(View view){
           Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha_anim);
            mTextView.startAnimation(animation);
        }
    

    fromAlpha="1"和toAlpha="0.3"表示从透明度从100%到30%


    ezgif-4-19391dc1b2.gif

    缩放动画

    <?xml version="1.0" encoding="utf-8"?>
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXScale="0.0"
        android:toXScale="1.8"
        android:fromYScale="0.0"
        android:toYScale="1.8"
        android:duration="600"
        android:fillAfter="true">
    </scale>
    
          public void ScaleAnim(View view){
            Animation animation = AnimationUtils.loadAnimation(this, R.anim.scale_anim);
            mTextView.startAnimation(animation);
        }
    

    缩放动画中2个属性pivotX和pivotY,为pivotX数值30时表示从该控件最左边加30px的位置开始缩放,pivotY的意义也一样

    <?xml version="1.0" encoding="utf-8"?>
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXScale="0.0"
        android:toXScale="1.8"
        android:fromYScale="0.0"
        android:toYScale="1.8"
        android:duration="600"
        android:pivotX="30"
        android:pivotY="30"
        android:fillAfter="true">
    </scale>
    
    ezgif-4-a4aa28590b.gif

    pivotX数值为50%时表示从控件的宽度的50%的位置开始缩放,pivotY的意义也一样

    <?xml version="1.0" encoding="utf-8"?>
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXScale="0.0"
        android:toXScale="1.8"
        android:fromYScale="0.0"
        android:toYScale="1.8"
        android:duration="600"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="true">
    </scale>
    
    ezgif-4-5f8a803c08.gif

    pivotX数值为50%p时表示从该控件的最左边加上父控件宽度的50%的位置开始缩放,pivotY的意义也一样

    <?xml version="1.0" encoding="utf-8"?>
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXScale="0.0"
        android:toXScale="1.8"
        android:fromYScale="0.0"
        android:toYScale="1.8"
        android:duration="600"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:fillAfter="true">
    </scale>
    
    ezgif-4-da8568ad34.gif

    旋转动画

       public void RotateAnim(View view){
            Animation animation = AnimationUtils.loadAnimation(this, R.anim.rotate_anim);
            mTextView.startAnimation(animation);
        }
    

    缩放动画和旋转动画一样都可以设置pivotX和pivotY,意义一样

    <?xml version="1.0" encoding="utf-8"?>
    <rotate xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="500"
            android:fillAfter="true"
            android:fromDegrees="0"
            android:pivotX="50"
            android:pivotY="50"
            android:toDegrees="120">
    </rotate>
    
    ezgif-4-da621ca649.gif
    <?xml version="1.0" encoding="utf-8"?>
    <rotate xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="500"
            android:fillAfter="true"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="120">
    </rotate>
    
    ezgif-4-2e8880df32.gif

    Set

    当我们希望几组动画一起播放时就需要set标签

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:duration="500"
         android:fillAfter="true">
    
        <alpha android:fromAlpha="0" android:toAlpha="1">
        </alpha>
    
        <scale android:pivotX="50%" android:pivotY="50%"
            android:fromXScale=".3" android:toXScale="1.5" android:fromYScale=".3" android:toYScale="1.5">
        </scale>
    
        <rotate android:pivotX="50%" android:pivotY="50%"
            android:fromDegrees="0" android:toDegrees="540">
        </rotate>
    
    </set>
    
        public void SetAnim(View view){
            Animation animation = AnimationUtils.loadAnimation(this, R.anim.set_anim);
            mTextView.startAnimation(animation);
        }
    
    ezgif-4-c2012ef19e.gif

    android:duration 动画持续时间,以毫秒为单位
    android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态
    android:fillBefore 如果设置为true,控件动画结束时,还原到开始动画前的状态
    android:fillEnabled 与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态
    android:repeatCount 重复次数
    android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

    OK,以上关于view动画使用xml方式的基本使用。

    相关文章

      网友评论

          本文标题:Android View动画

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