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);//让图片开始透明度渐变的补间动画
}
});
}
}