以下先使用一個AsyncTask啟動動畫,然後可以在doInBackground()函式中載入初始資料,在載入完畢後和動畫撥放完畢後再載入另一畫面。(動畫結束後會藉由改變isAnim來提示動畫完成)
import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.Animation; import android.view.animation.RotateAnimation; public class MainActivity extends Activity { private boolean isAnim = true; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.img); new LoadData().execute(); } class LoadData extends AsyncTask{ @Override protected void onPreExecute() { super.onPreExecute(); Animation anim = null; anim = new RotateAnimation(0.0f,+360.0f); anim.setInterpolator(new AccelerateDecelerateInterpolator()); anim.setDuration(2000); anim.setAnimationListener(new Animation.AnimationListener(){ @Override public void onAnimationStart(Animation arg0) { } @Override public void onAnimationRepeat(Animation arg0) { } @Override public void onAnimationEnd(Animation arg0) { isAnim = false; } }); findViewById(R.id.img1).startAnimation(anim); } protected String doInBackground(String... args) { //處理loading 資料 while(isAnim) { } return null; } protected void onPostExecute(String file_url) { runOnUiThread(new Runnable() { public void run() { setContentView(R.layout.activity_main); } }); } } }
沒有留言:
張貼留言