以下先使用一個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);
}
});
}
}
}
沒有留言:
張貼留言