虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android 用Animation-list实现逐帧动画

Android 用Animation-list实现逐帧动画
类别:Android编程   作者:码皇   来源:互联网   点击:

在处理耗时工作的时候,大多数会弹出一个加载的框,里面有一个连续旋转的图片,很多时候都是用一张图片,使用rotate来设定旋转,不过看起来不太美观,没有形象感,在3 0之前Android有两种动画效果分别是补间动画

在处理耗时工作的时候,大多数会弹出一个加载的框,里面有一个连续旋转的图片,很多时候都是用一张图片,使用rotate来设定旋转,不过看起来不太美观,没有形象感,在3.0之前Android有两种动画效果分别是补间动画和帧动画,用一张图片实现的是使用补间动画,定义给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。我个人比较倾向的是帧动画,不过这个需要美工的支持,还有一种方式就是通过反编译其他的软件获取图片,我不是美工也没有美工的支持,所以就解压QQ的apk,获取它里面的显示加载动画的图片,图片资源http://download.csdn.net/download/jwzhangjie/6852981。


看看如何实现的

load_animation_1.xml

load_animation_2.xml


wifi_animation_1.xml

布局文件:


    public class Test extends BaseActivity{
    private Button button1,button2,button3;
    private ImageView animationIV;
    private ImageView animationIV2;
    private ImageView animationIV3;
    private AnimationDrawable AniDraw, AniDraw2, AniDraw3;
    @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);
    button1 = (Button)findViewById(android.R.id.button1);
    button1.setOnClickListener(new OnClickListener() {
    @Override public void onClick(View v) {
    if (AniDraw.isRunning()) {
    AniDraw.stop();
    }
    else {
    AniDraw.start();
    }
    }
    }
    );
    button2 = (Button)findViewById(android.R.id.button2);
    button2.setOnClickListener(new OnClickListener() {
    @Override public void onClick(View v) {
    if (AniDraw2.isRunning()) {
    AniDraw2.stop();
    }
    else {
    AniDraw2.start();
    }
    }
    }
    );
    button3 = (Button)findViewById(android.R.id.button3);
    button3.setOnClickListener(new OnClickListener() {
    @Override public void onClick(View v) {
    if (AniDraw3.isRunning()) {
    AniDraw3.stop();
    }
    else {
    AniDraw3.start();
    }
    }
    }
    );
    animationIV = (ImageView)findViewById(R.id.animationIV);
    /** * 这里设置的是setBackgroundResource,那么你获取的时候通过getBackground */ animationIV.setBackgroundResource(R.anim.load_animation_1);
    AniDraw = (AnimationDrawable)animationIV.getBackground();
    /** * 在xml里面通过src来设置跟在代码里面使用setImageResource获取的时候通过getDrawable * 例如:animationIV2.setImageResource(R.anim.load_animation_2);
    是一样的 */ animationIV2 = (ImageView)findViewById(R.id.animationIV2);
    AniDraw2 = (AnimationDrawable)animationIV2.getDrawable();
    animationIV3 = (ImageView)findViewById(R.id.animationIV3);
    animationIV3.setImageResource(R.anim.wifi_animation_1);
    AniDraw3 = (AnimationDrawable)animationIV3.getDrawable();
    }

效果由于我不会做动画效果图片,所以效果图也就不贴了


相关热词搜索: Android 用