当前位置 : IT培训网 > 移动开发 > android > 如何去创建一个android的Splash Screen

如何去创建一个android的Splash Screen

时间:2016-11-01 17:01:32  来源:Android培训网  作者:IT培训网  已有:名学员访问该课程
标签(Tag):   Android(61)Splash Scree(1)
很多时候当你开发android应用,特别是在开发游戏应用的时候,会用到一个splash screen(类似eclipse启动的画面)。好像android对这个有很好的支持。就比如iPhone,将splash的图片以default命名,就会出现Splash Screen,很简单的一个办法,那

很多时候当你开发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的,给用户以更高的体验。

IT培训网依托中国互联网行业蓬勃发展优势,为中国的软件开发学习者和IT从业人员提供培训学校、编程学习、经验交流、咨询解答等服务,帮助更多喜爱编程的人员实现自己的IT梦想。
 
顶一下
(0)
0%
踩一下
(0)
0%

IT培训0元试听 每期开班座位有限.0元试听抢座开始! IT培训0元试听

  • 姓名 : *
  • 电话 : *
  • QQ : *
  • 留言 :
  • 验证码 : 看不清?点击更换请输入正确的验证码

在线咨询在线咨询

温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。

------分隔线----------------------------
------分隔线----------------------------

推荐内容