創建一個android的Splash Screen

fmms 13年前發布 | 41K 次閱讀 Android Android開發 移動開發

在開發android應用的時候 ,尤其是游戲的時候,經常需要有一個Splash Screen(就類似于Eclipse啟動的畫面)。但是,android好像沒有對這個有很好的支持(也許我沒找到吧)。比如iphone,只需要將 Splash的圖片以default命名,就可以可以出現Splash Screen了,方式很簡單。那在android中怎么辦呢?我試了兩種方法,下面我給大家一一道來。

第一種,我采用的方式是在Activity中新開一個線程,這個線程判斷過去了多長時間,如果到大了設定的時間,則結束當前的Splash Screen,啟動新的Activity,往往是游戲的主菜單。這種方式表面上使用沒有任何的問題,但是,當我結束線程的使用stop方法的時候,android實際上跑出了一個異常:不支持這個操作。盡管能夠運行,但是有異常,有點不爽。所以我就改造了一下,使用了第二種方法。

第二種,通過Timer和TimerTask,Handler的結合。Timer來計時,TimerTask來判斷是不是已經滿足設定時間,hanlder來具體啟動新的Activity。這種方法比較好,沒有出現異常。具體的實現方法:

在Activity中的onCreate方法中,初始化并開始Timer:

timer = new Timer(true);
startTime = System.currentTimeMillis();
timer.schedule(task, 0, 1);
startTime是開始時間,要判斷時間差是否滿足設定的時間。下面是TimerTask的代碼:
private final TimerTask task = new TimerTask() {
                @Override
                public void run() {
                       if (task.scheduledExecutionTime() - startTime == 1000 || !_active) {
                                         Message message = new Message();   
                                         message.what = 0;
                                         timerHandler.sendMessage(message);
                                         timer.cancel();
                                         this.cancel();
                                      }

                }
        };
還有handler的代碼:
private final Handler timerHandler = new Handler() {
                public void handleMessage(Message msg) {
                        switch (msg.what) {   
            case 0:

                    SplashScreen.this.finish();
                        //start new activity here
                    break;
                        }   
                        super.handleMessage(msg);   
                }
        };

這樣一個基本的Splash就實現了。

另外,不知道大家發現沒有,我的代碼中有一個這個_active變量,這個是做什么的呢?見下面的代碼:

@Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            _touched = false;
        }
        return true;
    }

在顯示Splash Screen的過程中,如果觸摸了屏幕,會直接跳過Splash Screen的,給用戶以更高的體驗。

沒有更深入研究,歡迎大家討論。

文章出處:http://www.eoeandroid.com/thread-8225-1-1.html

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!