介绍

动画是 Android 使用程序中重要的交互特性。Android 供给了多种动画作用,包含平移、缩放、旋转和透明度等,它们可以经过代码或 XML 来完成。本文将介绍 Android 动画的原理和完成办法,并供给一些示例。

原理

Android 动画的完成原理是经过改动视图的特色来完成的。当咱们在代码中设置视图的特色值时,Android 会经过滑润过渡的办法来将视图从一个状况过渡到另一个状况。这种滑润过渡的作用就是动画作用。

特色

Android 中有许多特色可以用来完成动画作用,以下是一些常用的特色:

  • translationX:视图在 X 轴上的平移间隔。
  • translationY:视图在 Y 轴上的平移间隔。
  • scaleX:视图在 X 轴上的缩放比例。
  • scaleY:视图在 Y 轴上的缩放比例。
  • rotation:视图的旋转角度。
  • alpha:视图的透明度。

类型

Android 中有多种不同类型的动画,每种类型都有其自身的特色和用途:

View 动画

View 动画是一种在使用程序中完成动画作用的简略办法。它可以经过 XML 或代码来完成。View 动画可以使用于任何 View 对象,包含按钮、文本框、图画等等。常见的 View 动画包含平移、缩放、旋转和透明度等作用。以下是一个 View 动画的 XML 示例:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0%"
        android:toXDelta="50%"
        android:duration="500"
        android:repeatCount="infinite"
        android:repeatMode="reverse" />
</set>

帧动画

帧动画是一种将一系列图画逐帧播放来完成动画作用的办法。它可以经过 XML 或代码来完成。帧动画常用于播放一系列连续的图画,例如动态图画、电影等等。以下是一个帧动画的 XML 示例:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/animation_frame1" android:duration="50" />
    <item android:drawable="@drawable/animation_frame2" android:duration="50" />
    <item android:drawable="@drawable/animation_frame3" android:duration="50" />
    ...
</animation-list>

特色动画

特色动画是一种可以改动视图特色值的动画作用。它可以经过 XML 或代码来完成。特色动画可以使用于任何特色,包含大小、颜色、位置、透明度等等。它可以在运行时动态地更改特色值,从而完成滑润的动画作用。以下是一个特色动画的 Java 代码的示例:

ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationX", 0f, 300f);
animator.setDuration(1000);
animator.start();

过渡动画

过渡动画是一种在使用程序中完成滑润过渡作用的办法。它可以经过 XML 或代码来完成。过渡动画常用于完成屏幕之间的切换作用,例如滑动、淡入淡出等等。以下是一个过渡动画的 XML 示例:

<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <fade android:duration="500" />
</transition>

Lottie 动画

Lottie 是 Airbnb 开源的一种动画库,它可以将 Adobe After Effects 中制作的动画直接导出为 JSON 格局,并在 Android 使用程序中运用。Lottie 动画可以完成非常复杂的动画作用,例如骨骼动画、粒子作用等等。

完成

要完成 Android 动画,咱们需求按照以下步骤:

  1. 创立动画资源文件。
  2. 在代码中加载动画资源文件。
  3. 将动画使用到相应的视图中。

咱们可以经过 XML 或代码来创立动画资源文件。以下是一个简略的平移动画的 XML 示例:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0%p"
        android:toXDelta="50%p"
        android:duration="500"
        android:repeatCount="infinite"
        android:repeatMode="reverse" />
</set>

在代码中加载动画资源文件的办法如下:

Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate);

最后,咱们需求将动画使用到相应的视图中:

imageView.startAnimation(animation);

下面是一个完成平移动画作用的 Java 代码示例:

View view = findViewById(R.id.view);
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationX", 0f, 300f);
animator.setDuration(1000);
animator.start();

结论

无论是在使用程序设计中仍是在用户体验中,动画都是一个非常重要的因素。假如你想要在你的使用程序中完成动画作用,本文供给了 Android 动画的基本原理和完成办法。你可以依据自己的需求运用不同类型的动画来完成不同的作用。

引荐

android_startup: 供给一种在使用启动时可以愈加简略、高效的办法来初始化组件,优化启动速度。不只支撑Jetpack App Startup的悉数功用,还供给额外的同步与异步等待、线程控制与多进程支撑等功用。

AwesomeGithub: 根据Github的客户端,纯操练项目,支撑组件化开发,支撑账户密码与认证登陆。运用Kotlin言语进行开发,项目架构是根据JetPack&DataBinding的MVVM;项目中运用了Arouter、Retrofit、Coroutine、Glide、Dagger与Hilt等盛行开源技术。

flutter_github: 根据Flutter的跨平台版本Github客户端,与AwesomeGithub相对应。

android-api-analysis: 结合具体的Demo来全面解析Android相关的知识点, 协助读者可以更快的掌握与理解所阐述的要点。

daily_algorithm: 每日一算法,由浅入深,欢迎参加一起共勉。