android 帧动画

  原本的想法是给自己的app在启动时显示一个动画欢迎界面,然后跳转到开始的activity。起初的想法是使用gif格式的图片,但是android不支持gif动画。

后来发现android有其他方法可以实现。就是所谓的帧动画。不多说,看例子。

  

package com.tangchd.nanjing.musicplayer.acivities;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class HelloActivity extends Activity {

    // 帧动画
    private AnimationDrawable frameAnimation = null;
    private Drawable mBitAnimation = null;

    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 全屏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_hello);

        
        frameAnimation = new AnimationDrawable();
        for (int i = 1; i <= 6; i++) {
            int id = getResources().getIdentifier("hello" + i, "drawable",
                    this.getPackageName());
            mBitAnimation = getResources().getDrawable(id);
            // 参数mBitAnimation是该帧的图片,参数300是下一帧显示的时间间隔,按毫秒计算
            frameAnimation.addFrame(mBitAnimation, 300);
        }
        
        // 是否不重复动画。true不重复显示,停留在最后一帧。false重复显示
        frameAnimation.setOneShot(true);
        
        // getDecorView获得window最顶层的View
        View view = this.getWindow().getDecorView(); 
        view.setBackgroundDrawable(frameAnimation);
        // 开始动画
        frameAnimation.start();

        // 延迟跳入下一个activity
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                Intent mainIntent = new Intent(HelloActivity.this,
                        PlayActivity.class);
                startActivity(mainIntent);
                finish();
            }
        }, 6000);    
    }
}
原文地址:https://www.cnblogs.com/tangchd/p/3455575.html