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

为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); //发送消息
    }
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值