2012年10月27日 星期六

Android 載入時顯示Logo

一般App開啟後都會顯示Logo或是一段動畫,待資料載入完畢之後再進到功能頁面。
以下先使用一個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);
                }
            }); 
        } 
    }
}

沒有留言:

張貼留言