美文网首页
补间动画

补间动画

作者: Method | 来源:发表于2021-05-29 16:48 被阅读0次

介绍

补间动画又可以分为四种形式,分别是 alpha(淡入淡出),translate(位移),scale(缩放大小),rotate(旋转)。

补间动画的实现,一般会采用xml 文件的形式;代码会更容易书写和阅读,同时也更容易复用。

使用

XML 实现

首先,在res/anim/ 文件夹下定义如下的动画实现方式

alpha.gif

alpha_anim.xml 动画实现

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromAlpha="1.0"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:toAlpha="0.0"
    >
</alpha>
scale.gif

scale_anim.xml 动画实现

<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="0.0"
    android:fromYScale="0.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.0"
    android:toYScale="1.0"/>
rotate.gif

rotate_anim.xml 动画实现

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromDegrees="0"
    android:toDegrees="100"
    android:pivotX="50"
    android:pivotY="50"
    />
translate.gif

translate_anim.xml 动画实现

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXDelta="0"
    android:toXDelta="200"
    android:fromYDelta="0"
    android:toYDelta="100"/>

开始动画

val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_alpha)
imageView.startAnimation(loadAnimation)

结束动画

imageView.clearAnimation()

属性介绍

android:drawable    需要进行旋转动画的图片

android:fromDegrees  旋转的起始点(旋转开始的角度)

android:toDegrees     旋转的结束点(旋转最终角度)

andoird:pivotX       旋转点的X值(距离左侧的偏移量)

android:pivotY      旋转点的Y值(距离顶部的偏移量)

android: visible    这个好理解,就是图片初始的显示状态

android:pivotX 与 android:pivotY 这两个属性值为float,可以给具体数也可以给百分比。比如你知道图片大小是100,你可以给(50,50)表示旋转中心点距图片左边50,右边50

android:interpolator:这个属性是用来设置转动速率的。

LinearInterpolator为匀速效果,Accelerateinterpolator为加速效果、DecelerateInterpolator为减速效果,

android:repeatCount 重复的次数,默认为0,必须是int,可以为-1表示不停止

android:duration属性表示从android:fromDegrees转动到android:toDegrees所花费的时间,单位为毫秒。可以用来计算速度。

android:startOffset 在调用start函数之后等待开始运行的时间,单位为毫秒,若为10,表示10ms后开始运行

android:repeatMode 重复的模式,默认为restart,即重头开始重新运行,可以为reverse即从结束开始向前重新运行。

在android:repeatCount大于0或为infinite时生效

android:detachWallpaper 表示是否在壁纸上运行

android:zAdjustment 表示被animated的内容在运行时在z轴上的位置,默认为normal。normal保持内容当前的z轴顺序top运行时在最顶层显示bottom运行时在最底层显示

java 实现

 /*
    * fromDegrees 开始角度
    * toDegrees   结束角度
    */
    private fun setRotateAnimation(fromDegrees: Float = 0f, toDegrees: Float = 360f) {
        rotateAnimation = RotateAnimation(fromDegrees, toDegrees, 50f, 50f)
        rotateAnimation.duration = 2000

        rotateAnimation.apply {
            fillAfter = cb_keep.isChecked                   //动画在播放结束时是否保持最终的状态
            repeatCount = if (cb_loop.isChecked) {          //动画的重复次数
                0
            } else {
                -1
            }

            repeatMode = if (cb_reverse.isChecked) {        //动画的重复方式
                Animation.REVERSE                           //反转动画
            } else {
                Animation.RESTART                           //重新播放动画
            }

        }
        imageView.startAnimation(rotateAnimation)           //开始动画
    }

Activity切换动画

Android使用Theme自定义Activity进入退出动画

<style name="Theme.AnimationTest" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        ...
        <item name="android:windowAnimationStyle">@style/myActivityOutEnterAnima</item>
    </style>
 <style name="myActivityOutEnterAnima" parent="@android:style/Animation.Activity">
        <!-- 定义activity的进出场动画 -->
        <item name="android:activityOpenEnterAnimation">@anim/right_in</item>
        <item name="android:activityOpenExitAnimation">@anim/left_out</item>
        <item name="android:activityCloseEnterAnimation">@anim/left_in</item>
        <item name="android:activityCloseExitAnimation">@anim/right_out</item>
    </style>

android:activityOpenEnterAnimation:指的是进入B时, B的动画。
android:activityOpenExitAnimation:指的是进入B时,A的动画,与B的动画是一起显示的。
android:activityCloseEnterAnimation:通过B跳转到C后,后退到B时,B的进入动画
android:activityCloseExitAnimation:通过B跳转到C后,后退到B时,C的退出动画'

github地址

相关文章

  • Android回顾--(十六) 动画简析

    动画: 补间动画(Tween动画) 帧动画(Frame动画) 属性动画(Property动画) 补间动画 特点: ...

  • javaScript补间动画库

    补间动画库 补间动画介绍 补间动画指的是做FLASH、VIDEO动画时,在两个关键帧中间需要做“补间动画”,才能实...

  • Android动画之视图动画

    补间动画 可以使用补间动画系统执行补间动画。补间动画计算动画相关的信息包括开始点、结束点、大小、旋转角度以及其他与...

  • 补间动画TweenAnimation

    补间动画官方文档1补间动画官方文档2

  • Android 基础动画之帧动画详解

    在上一篇 Android 基础动画之补间动画详解 主要介绍了补间动画的基本属性以及补间动画在Android起始设计...

  • Android 资源简介(五) AnimationDrawabl

    AnimationDrawable 代表动画资源。Android 既支持逐帧动画,也支持补间动画。 定义补间动画的...

  • Android动画

    Android动画分类: 视图动画:补间动画、逐帧动画 属性动画 视图动画 补间动画 可以在xml中定义动画,然后...

  • 补间动画、帧动画

    补间动画、帧动画

  • Android 动画锦集

    Android 动画可分为逐帧动画、补间动画、属性动画。使用传统的逐帧动画、补间动画可以实现 Android 基本...

  • Android UI 绘制面试题

    1.1 Android 补间动画和属性动画的区别? 特性补间动画属性动画view 动画支持支持非view动画不支持...

网友评论

      本文标题:补间动画

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