http://www.eoeandroid.com/thread-8225-1-1.html

在开发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的,给用户以更高的体验。

更多相关文章

  1. [原创]通过代码及流程图说明Google在Android上的Push机制的实现
  2. Android Studio xml android标签突然没有代码提示问题的解决
  3. Android填坑之旅(第十七篇)MIX2 适配看这一篇就够了,只需一行代码
  4. 如何使Android应用程序获取系统权限 来修改系统时间
  5. Android 代码实现查看SQLite数据库中的表
  6. android:如何在java代码中覆盖webview中的javascript事件
  7. android的代码性能优化
  8. 《第一行代码》扩展总结
  9. Android Studio 初步在代码中操作控件

随机推荐

  1. Android中Broadcast的Intent大全
  2. Android(安卓)handler异步更新
  3. Android中获取应用程序(包)的大小-----Pa
  4. Android(安卓)HttpgetRequester+onRespon
  5. Android(安卓)HttpUtils工具类
  6. Android(安卓)LinearLayout和RelativeLay
  7. android 确认对话框实例
  8. iTextPdf--the world's preferred PDF li
  9. android ANR 案例分析
  10. Android(安卓)实现控件浮动效果