建立一個android的Splash Screen

在開發android應用的時候 ,尤爲是遊戲的時候,常常須要有一個Splash Screen(就相似於Eclipse啓動的畫面)。可是,android好像沒有對這個有很好的支持(也許我沒找到吧)。好比iphone,只須要將 Splash的圖片以default命名,就能夠能夠出現Splash Screen了,方式很簡單。那在android中怎麼辦呢?我試了兩種方法,下面我給你們一一道來。java

第一種,我採用的方式是在Activity中新開一個線程,這個線程判斷過去了多長時間,若是到大了設定的時間,則結束當前的Splash Screen,啓動新的Activity,每每是遊戲的主菜單。這種方式表面上使用沒有任何的問題,可是,當我結束線程的使用stop方法的時候,android實際上跑出了一個異常:不支持這個操做。儘管可以運行,可是有異常,有點不爽。因此我就改造了一下,使用了第二種方法。android

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

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

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就實現了。this

另外,不知道你們發現沒有,個人代碼中有一個這個_active變量,這個是作什麼的呢?見下面的代碼:線程

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

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

沒有更深刻研究,歡迎你們討論。遊戲

相關文章
相關標籤/搜索