为Android应用程序添加Splash启动画面

来源:互联网 发布:东阳法院拍卖淘宝网 编辑:程序博客网 时间:2024/05/17 07:17

为Android应用程序添加Splash启动画面

目前,多数应用程序为了在启动时显示公司、产品或者开发者等相关信息,都会有一个Splash界面。在Splash界面等待的同时,也可以预加载数据、系统检测等操作。有两种方法可以实现”Splash启动画面“效果,下面说一下原理:

  • 其一,两个Activity,通过设置Handler类postDelayed()方法的参数来延迟第二个Activity的显示,经过设定的时间后跳转到第二个Activity界面,这种方法也是最常用的。

  • 其二,一个Activity,程序启动时显示启动画面,启动后使用setVisibility(View.GONE)将启动画面隐藏起来。但是,当Activity中要显示的内容较多时,该方法就会影响程序的性能。

下面分别看一下这两种方法具体如何实现:

一、两个Activity,postDelayed()延迟显示第二个Activity

首先,制作splash启动界面和另一个要跳转到的界面,在AndroidManifest.xml中声明两个Activity,定义splashActivity为默认Activity,将android:theme属性设置为”@android:style/Theme.NoTitleBar”去掉标题。
下面说一下,实现该方法的主要java代码:

 protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.splash);        new Handler().postDelayed(new Runnable(){            @Override            public void run() {                // TODO Auto-generated method stub                Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);                SplashActivity.this.startActivity(mainIntent);//跳转到MainActivity                SplashActivity.this.finish();//结束SplashActivity            }        }, 3000);//给postDelayed()方法传递延迟参数    } 

其中,handler类有三种方法来实现设置runnable对象的时间:

1、post(Runnable r),表示立即执行Runnable对象 ;
2、postAtTime(Runnable r, long uptimeMillis),在指定的时间点(uptimeMillis)执行Runnable对象 ;
3、postDelayed(Runnable r, long delayMillis),在指定的时间间隔后(delayMillis)执行Runnable对象。

另外,还可以使用overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)给Activity添加切换效果(左滑动,右滑动,淡入淡出等)。

二、一个Activity,使用setVisibility(View.GONE)隐藏指定区域

该方法中只有一个Activity,在应用启动后发送一个消息,利用setVisibility(View.GONE)隐藏指定区域,从而实现”启动画面“效果。具体代码如下:

     private LinearLayout splash;//要显示的启动区域     private Handler splashHandler = new Handler() {         public void handleMessage(Message msg) {                  switch (msg.what) {                  case 0:                      SystemClock.sleep(4000);                          splash.setVisibility(View.GONE);//隐藏splash区域                          break;                  }                  super.handleMessage(msg);              }       };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          splash = (LinearLayout) findViewById(R.id.splashscreen);        Message msg = new Message();        msg.what = 0;          splashHandler.sendMessageDelayed(msg, 1000); //发送消息    }
0 1
原创粉丝点击