欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android补间动画

程序员文章站 2022-03-18 13:35:43
...

补间动画由开发者告诉Android需要执行的一系列简单变换,然后Android自动执行需要的变换。补间动画通过Animation类来处理。Android提供了四种补间动画:透明度渐变动画、旋转动画、缩放动画和平移动画。
实现步骤:
1、正如上面提到第一样,补间动画需要编写一个xml文件来告诉Android需要执行什么操作。在资源文件夹res下新建资源文件夹anim(名称必须是anim,所有的Tween Animation动画资源文件都存放在此文件夹中);后在anim文件中新建animation resource文件anim_alpha(这个文件是用于指明要完成何种操作,此处以透明度的动画为列);

指出透明度是由不透明变为完全透明,持续时间是2<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
    android:fromAlpha="1"
    android:toAlpha="0"
    android:repeatCount="1"
    android:repeatMode="reverse"
    android:fillAfter="true"
    android:duration="2000"
    />
</set>

2、实现改变图片的透明度的动画,实际上是由ImageView控件调用startAnimation(animation)方法,其中的annimation对象是由AnimationUtils.loadAnimation(this,R.anim.anim_alpha);得来的;参数中的资源文件便是前面在anim中创建的xml文件;
3、为ImageVIew控件设置图片资源,是通过解析图片资源得到Bitmap位图对象来的

annimation_img=(ImageView)findViewById(R.id.annimation_img);
        bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.a1);//得到图片的位图对象
        annimation_img.setImageBitmap(bitmap);

总结一下就是,实现图片的补间动画,最主要的思路就是要用ImageView调用startAnnimation(Annimation annimation)方法来实现的,而具体要实现何种补间动画便要在anim目录下创建想xml文件;之间便用Annimation来联系。
主活动中的Java代码:

package com.example.movingbar;

import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.AnimationDrawable;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.util.Random;

public class MainActivity extends AppCompatActivity {
   private ImageView annimation_img;
   private Button bt_start;
   private Button bt_stop;
   private AnimationDrawable animationDrawable;
   private Animation animation;//用于加载补间动画的效果
    private Bitmap bitmap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       //实现补间动画
        animation= AnimationUtils.loadAnimation(this,R.anim.anim_alpha);
        annimation_img=(ImageView)findViewById(R.id.annimation_img);
        bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.a1);//得到图片的位图对象
        annimation_img.setImageBitmap(bitmap);
        bt_start=(Button)findViewById(R.id.bt_start);
        bt_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                annimation_img.startAnimation(animation);//让图片开始透明度渐变的补间动画
            }
        });


    }

}

相关标签: Android