📜  Android 动画示例(1)

📅  最后修改于: 2023-12-03 14:39:09.918000             🧑  作者: Mango

Android 动画示例

概述

在Android应用开发中,动画是一种非常强大的技术工具,可以为应用添加生动和吸引人的视觉效果。本文将介绍一些常见的Android动画示例,帮助程序员更好地了解和使用Android动画。

基本概念

在开始之前,让我们先了解一些基本概念:

  • View 动画:View 动画是一种将动画应用于 View 对象的技术。它通过改变 View 的属性来实现动画效果,如平移、缩放、旋转和透明度等。
  • 属性动画:属性动画是一种更强大和灵活的动画技术,可以对任意对象的任意属性进行动画操作。
  • 插值器(Interpolator):插值器定义了动画在时间上的变化规律,如匀速、加速、减速等。
  • 帧动画:帧动画是一种基于一系列预定义帧图像的动画。它通过按顺序显示这些帧图像来实现动画效果。

现在让我们来看一些具体的例子。

View 动画示例
平移动画

下面的代码演示了如何使用 View 动画实现一个平移动画效果:

val translateAnimation = TranslateAnimation(0f, 200f, 0f, 0f)
translateAnimation.duration = 1000
translateAnimation.interpolator = AccelerateDecelerateInterpolator()
view.startAnimation(translateAnimation)
旋转动画

下面的代码演示了如何使用 View 动画实现一个旋转动画效果:

val rotateAnimation = RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)
rotateAnimation.duration = 1000
rotateAnimation.interpolator = LinearInterpolator()
view.startAnimation(rotateAnimation)
缩放动画

下面的代码演示了如何使用 View 动画实现一个缩放动画效果:

val scaleAnimation = ScaleAnimation(1f, 0.5f, 1f, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)
scaleAnimation.duration = 1000
scaleAnimation.interpolator = DecelerateInterpolator()
view.startAnimation(scaleAnimation)
透明度动画

下面的代码演示了如何使用 View 动画实现一个透明度动画效果:

val alphaAnimation = AlphaAnimation(1f, 0.5f)
alphaAnimation.duration = 1000
alphaAnimation.interpolator = AccelerateInterpolator()
view.startAnimation(alphaAnimation)
属性动画示例
平移动画

下面的代码演示了如何使用属性动画实现一个平移动画效果:

val translationX = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, 200f)
val translationY = PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, 200f)
ObjectAnimator.ofPropertyValuesHolder(view, translationX, translationY).apply {
    duration = 1000
    interpolator = AccelerateDecelerateInterpolator()
}.start()
旋转动画

下面的代码演示了如何使用属性动画实现一个旋转动画效果:

ObjectAnimator.ofFloat(view, View.ROTATION, 0f, 360f).apply {
    duration = 1000
    interpolator = LinearInterpolator()
    repeatCount = ValueAnimator.INFINITE
}.start()
缩放动画

下面的代码演示了如何使用属性动画实现一个缩放动画效果:

val scaleX = PropertyValuesHolder.ofFloat(View.SCALE_X, 1f, 0.5f)
val scaleY = PropertyValuesHolder.ofFloat(View.SCALE_Y, 1f, 0.5f)
ObjectAnimator.ofPropertyValuesHolder(view, scaleX, scaleY).apply {
    duration = 1000
    interpolator = DecelerateInterpolator()
}.start()
透明度动画

下面的代码演示了如何使用属性动画实现一个透明度动画效果:

ObjectAnimator.ofFloat(view, View.ALPHA, 1f, 0.5f).apply {
    duration = 1000
    interpolator = AccelerateInterpolator()
}.start()
帧动画示例

下面的代码演示了如何使用帧动画实现一个连续播放的动画效果:

  1. 首先,在 res/drawable 目录下创建一个帧动画文件 animation_list.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
    <item android:drawable="@drawable/frame_1" android:duration="100" />
    <item android:drawable="@drawable/frame_2" android:duration="100" />
    <item android:drawable="@drawable/frame_3" android:duration="100" />
    <!-- 添加更多的帧图像 -->
</animation-list>
  1. 然后,在代码中使用该帧动画:
val animationDrawable = view.background as AnimationDrawable
animationDrawable.isOneShot = false
animationDrawable.start()
总结

本文介绍了 Android 动画的基本概念,并提供了一些常见的 View 动画、属性动画和帧动画示例。希望这些示例能够帮助程序员更好地理解和使用 Android 动画技术。