📜  Android中的动画示例

📅  最后修改于: 2021-05-10 17:09:23             🧑  作者: Mango

动画是将运动效果添加到任何视图,图像或文本的过程。借助动画,您可以添加运动或更改特定视图的形状。 Android中的动画通常用于为UI提供丰富的外观。动画基本上分为以下三种类型:

  1. 物业动画
  2. 查看动画
  3. 可绘制动画

1.属性动画

属性动画是可以对几乎所有内容进行动画处理的强大框架之一。这是Android 3.0中引入的功能强大且灵活的动画之一。属性动画可用于在CheckBox,RadioButtons和窗口小部件中添加除任何视图之外的任何动画。

物业动画

2.查看动画

视图动画可用于将动画添加到特定视图,以对视图执行补间动画。补间动画会计算动画信息,例如大小,旋转,起点和终点。这些动画较慢且较不灵活。如果我们要在该位置扩展特定的布局,可以使用View动画的示例。可以在Expandable RecyclerView中看到“查看动画”的示例。

查看动画

3.绘画动画

如果要在一个图像上设置另一个图像的动画,则使用“可绘制动画”。了解动画的简单方法是为drawable设置动画,一个接一个地加载一系列drawable来创建动画。可在许多应用程序的启动屏幕上看到可绘制动画的简单示例,该屏幕位于应用程序徽标动画上。

可绘制动画

动画的重要方法

Methods

Description

startAnimation() This method will start the animation. 
clearAnimation() This method will clear the animation running on a specific view. 

例子

现在,我们将看到将动画添加到ImageView的简单示例。注意,我们将使用Java语言实现该项目。

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。

步骤2:使用字符串.xml文件

可以从应用程序> res>值>字符串.xml中找到Strings.xml。以下是.xml字符串文件的代码段。

XML

    GFG App
    BLINK
    ROTATE
    FADE
    MOVE
    SLIDE
    ZOOM
    STOP ANIMATION
    Course Rating
    Course Name


XML


  
    
  
    
          
        
        


XML


    


XML


      
    
    
  
    
  


XML


  
    


XML


    
  
    
  


XML


    


XML


    
    


Java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
  
public class MainActivity extends AppCompatActivity {
  
    ImageView imageView;
    Button blinkBTN, rotateBTN, fadeBTN, moveBTN, slideBTN, zoomBTN, stopBTN;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = findViewById(R.id.imageview);
        blinkBTN = findViewById(R.id.BTNblink);
        rotateBTN = findViewById(R.id.BTNrotate);
        fadeBTN = findViewById(R.id.BTNfade);
        moveBTN = findViewById(R.id.BTNmove);
        slideBTN = findViewById(R.id.BTNslide);
        zoomBTN = findViewById(R.id.BTNzoom);
        stopBTN = findViewById(R.id.BTNstop);
  
        blinkBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add blink animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.blink_animation);
                imageView.startAnimation(animation);
            }
        });
  
        rotateBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add rotate animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate_animation);
                imageView.startAnimation(animation);
            }
        });
        fadeBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add fade animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_animation);
                imageView.startAnimation(animation);
            }
        });
        moveBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add move animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.move_animation);
                imageView.startAnimation(animation);
            }
        });
        slideBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add slide animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_animation);
                imageView.startAnimation(animation);
            }
        });
        zoomBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add zoom animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom_animation);
                imageView.startAnimation(animation);
            }
        });
        stopBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To stop the animation going on imageview
                imageView.clearAnimation();
            }
        });
    }
}


步骤3:使用activity_main.xml文件

activity_main.xml中创建ImageView以及将向视图添加动画的按钮。导航到应用程序> res>布局> activity_main.xml以下是activity_main.xml文件的代码

XML格式



  
    
  
    
          
        
        

步骤4:为ImageView创建6种不同类型的动画

要创建新动画,我们必须创建一个新目录来存储所有动画。导航到应用程序> res>右键单击res >>新建>>目录>>将目录命名为“ anim” 。在此目录中,我们将创建动画。要创建新动画,请在动画目录>>动画资源文件上单击鼠标右键,然后为文件指定名称。以下是6种不同动画的代码片段

1)眨眼动画

XML格式



    

2)淡入淡出动画

XML格式



      
    
    
  
    
  

3)移动动画

XML格式



  
    

4)旋转动画

XML格式



    
  
    
  

5)幻灯片动画

XML格式



    

6)缩放动画

XML格式



    
    

步骤5:使用MainActivity。 Java文件

通过单击特定的按钮将动画添加到ImageView。导航到应用程序> Java >您的应用程序包名称>> MainActivity。 Java的

Java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
  
public class MainActivity extends AppCompatActivity {
  
    ImageView imageView;
    Button blinkBTN, rotateBTN, fadeBTN, moveBTN, slideBTN, zoomBTN, stopBTN;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = findViewById(R.id.imageview);
        blinkBTN = findViewById(R.id.BTNblink);
        rotateBTN = findViewById(R.id.BTNrotate);
        fadeBTN = findViewById(R.id.BTNfade);
        moveBTN = findViewById(R.id.BTNmove);
        slideBTN = findViewById(R.id.BTNslide);
        zoomBTN = findViewById(R.id.BTNzoom);
        stopBTN = findViewById(R.id.BTNstop);
  
        blinkBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add blink animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.blink_animation);
                imageView.startAnimation(animation);
            }
        });
  
        rotateBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add rotate animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate_animation);
                imageView.startAnimation(animation);
            }
        });
        fadeBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add fade animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_animation);
                imageView.startAnimation(animation);
            }
        });
        moveBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add move animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.move_animation);
                imageView.startAnimation(animation);
            }
        });
        slideBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add slide animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_animation);
                imageView.startAnimation(animation);
            }
        });
        zoomBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To add zoom animation
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom_animation);
                imageView.startAnimation(animation);
            }
        });
        stopBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // To stop the animation going on imageview
                imageView.clearAnimation();
            }
        });
    }
}

输出: