android splash启动界面,Android启动界面(Splash)的两种实现方法

用2个Activity实现

用Handler对象的postDelayed方法来实现延迟跳转的目的。

补充:Handler的常用方法:

// 立即执行Runnable对象

public final boolean post(Runnable r);

// 在指定的时间(uptimeMillis)执行Runnable对象

public final boolean postAtTime(Runnable r, long uptimeMillis);

// 在指定的时间间隔(delayMillis)执行Runnable对象

public final boolean postDelayed(Runnable r, long delayMillis);

activity_splash.xml:

activity_main.xml:

SplashActivity:

package com.example.splashtest;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.view.Window;

public class SplashActivity extends Activity {

private final int SPLASH_DISPLAY_LENGHT = 3000;

private Handler handler;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_splash);

handler = new Handler();

// 延迟SPLASH_DISPLAY_LENGHT时间然后跳转到MainActivity

handler.postDelayed(new Runnable() {

@Override

public void run() {

Intent intent = new Intent(SplashActivity.this,

MainActivity.class);

startActivity(intent);

SplashActivity.this.finish();

}

}, SPLASH_DISPLAY_LENGHT);

}

}

MainActivity:

package com.example.splashtest;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

修改AndroidManifest.xml文件:

...

...

在SplashActivity中禁用返回键:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK){

return true;

}

return super.onKeyDown(keyCode, event);

}

用一个Activity实现

主要利用控件的隐藏来实现。

xml文件:

MainActivity

package com.example.splashtest2;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.os.SystemClock;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.Window;

import android.widget.LinearLayout;

public class MainActivity extends Activity {

private final int STOP_SPLASH = 0;

private final int SPLASH_TIME = 3000;

private LinearLayout splashLt;

private Handler splashHandler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

case STOP_SPLASH:

splashLt.setVisibility(View.GONE);

break;

default:

break;

}

super.handleMessage(msg);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

splashLt = (LinearLayout) findViewById(R.id.splash_lt);

Message msg = new Message();

msg.what = STOP_SPLASH;

// 注:这里必须用延迟发送消息的方法,否则ImageView不会显示出来

splashHandler.sendMessageDelayed(msg, SPLASH_TIME);

}

}

小结

建议使用第一种方法,用两个Activity实现,因为MainActivity中的代码不宜过多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值