建立一个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

没有更深刻研究,欢迎你们讨论。游戏

相关文章
相关标签/搜索