原文: https://javatutorial.net/animations-with-android-tutorial

本教程借助一个示例来说明什么是动画以及如何在 Android 应用程序中使用动画。

动画

你知道什么是动画吗? 动画实际上是对运动的幻想。 在这项技术中,相差很小的连续图像会产生运动效果。 动画在移动应用程序中非常有用。 教育中的动画用于解释理论和概念。 应用程序中的动画用来显示一些准则或过程。 向 Android 应用程序添加动画会增加用户的可加性。 它增加了乐趣,并平滑了用户体验。 在本教程中,您将学习如何通过在 Android 应用中添加动画来增加用户体验。

Android 中的动画

Android 提供了一个名为Animations的类。 此类提供了许多不同的方法。 以下是其中一些:

  • loadAnimation(Context, Layout):此方法用于加载动画。 它有两个参数。
  • start():用于启动动画。
  • setDuration(long duration):此方法设置 Android 中动画的持续时间。
  • getDuration():用于获取 Android 动画的持续时间。
  • end():用于结束动画。
  • cancel():用于取消动画。

Android 中的动画示例

让我们开始为 Android 中的动画创建示例。 我将讨论四种类型的动画:眨眼,淡入淡出,顺时针和滑动。 打开您的 Android Studio 并创建一个新活动。 在主要活动中,有一个图像视图和一个按钮。 我用足球的形象。 这是activity_main.xml的代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout android:layout_width="368dp"
  3. android:layout_height="495dp"
  4. tools:layout_editor_absoluteX="8dp"
  5. tools:layout_editor_absoluteY="8dp"
  6. xmlns:tools="http://schemas.android.com/tools"
  7. xmlns:android="http://schemas.android.com/apk/res/android">
  8. <TextView
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="JavaTutorial"
  12. android:id="@+id/textView2"
  13. android:textColor="#ff3eff0f"
  14. android:textSize="35dp"
  15. android:layout_centerHorizontal="true" />
  16. <ImageView
  17. android:layout_width="200dp"
  18. android:layout_height="200dp"
  19. android:id="@+id/imageView"
  20. android:src="@drawable/football"
  21. android:layout_below="@+id/textView2"
  22. android:layout_alignRight="@+id/textView2"
  23. android:layout_alignEnd="@+id/textView2"
  24. android:layout_marginTop="50dp" />
  25. <Button
  26. android:id="@+id/button2"
  27. android:layout_width="wrap_content"
  28. android:layout_height="wrap_content"
  29. android:layout_below="@+id/imageView"
  30. android:layout_centerHorizontal="true"
  31. android:layout_marginTop="59dp"
  32. android:backgroundTint="@color/colorAccent"
  33. android:onClick="Animation"
  34. android:text="Animation" />
  35. </RelativeLayout>

现在为眨眼动画,淡入淡出动画,顺时针动画和幻灯片动画创建四个布局文件。 这是blink_animation.xml的代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <alpha android:fromAlpha="0.0"
  4. android:toAlpha="1.0"
  5. android:interpolator="@android:anim/accelerate_interpolator"
  6. android:duration="600"
  7. android:repeatMode="reverse"
  8. android:repeatCount="infinite"/>
  9. </set>

这是fade_animation.xml的代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:interpolator="@android:anim/accelerate_interpolator" >
  4. <alpha
  5. android:fromAlpha="0"
  6. android:toAlpha="1"
  7. android:duration="2000" >
  8. </alpha>
  9. <alpha
  10. android:startOffset="2000"
  11. android:fromAlpha="1"
  12. android:toAlpha="0"
  13. android:duration="2000" >
  14. </alpha>
  15. </set>

这是clockwise_animation.xml的代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <rotate xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:fromDegrees="0"
  5. android:toDegrees="360"
  6. android:pivotX="50%"
  7. android:pivotY="50%"
  8. android:duration="5000" >
  9. </rotate>
  10. <rotate xmlns:android="http://schemas.android.com/apk/res/android"
  11. android:startOffset="5000"
  12. android:fromDegrees="360"
  13. android:toDegrees="0"
  14. android:pivotX="50%"
  15. android:pivotY="50%"
  16. android:duration="5000" >
  17. </rotate>
  18. </set>

这是slide_animation.xml的代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fillAfter="true" >
  4. <scale
  5. android:duration="500"
  6. android:fromXScale="1.0"
  7. android:fromYScale="1.0"
  8. android:interpolator="@android:anim/linear_interpolator"
  9. android:toXScale="1.0"
  10. android:toYScale="0.0" />
  11. </set>

现在创建一个 Java 类MainActivity.java并粘贴以下代码

  1. package com.example.admin.androidanimations;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.animation.Animation;
  6. import android.view.animation.AnimationUtils;
  7. import android.widget.ImageView;
  8. import android.widget.Toast;
  9. public class MainActivity extends Activity {
  10. int count=0;
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. }
  16. public void Animation(View view){
  17. if(count==0){
  18. ImageView image = (ImageView)findViewById(R.id.imageView);
  19. Animation animation = AnimationUtils.loadAnimation(getApplicationContext(),
  20. R.anim.clockwise_animation);
  21. image.startAnimation(animation);
  22. }
  23. if(count==1){
  24. ImageView image = (ImageView)findViewById(R.id.imageView);
  25. Animation animation1 = AnimationUtils.loadAnimation(getApplicationContext(),
  26. R.anim.fade_animation);
  27. image.startAnimation(animation1);
  28. }
  29. if(count==2){
  30. ImageView image = (ImageView)findViewById(R.id.imageView);
  31. Animation animation1 =
  32. AnimationUtils.loadAnimation(getApplicationContext(),
  33. R.anim.blink_animation);
  34. image.startAnimation(animation1);
  35. }
  36. if(count==3){
  37. ImageView image = (ImageView)findViewById(R.id.imageView);
  38. Animation animation1 =
  39. AnimationUtils.loadAnimation(getApplicationContext(),
  40. R.anim.slide_animation);
  41. image.startAnimation(animation1);
  42. count=0;
  43. }
  44. count++;
  45. }
  46. }

当用户首次单击count = 0的动画按钮时,图像将顺时针旋转。 当用户第二次单击count = 1时,图像将消失。 当用户第三次单击count = 2时,图像将开始闪烁。 第四次count = 3,则图像将显示幻灯片动画。 现在运行它,这是输出

Android 动画教程 - 图1

动画示例

这是它闪烁时的输出

Android 动画教程 - 图2

闪烁动画

您可以通过单击链接下载本教程。

资源

官方 Android 动画指南