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); } }