<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/imageView3"
android:src="@drawable/splash" />
</LinearLayout>
闪屏以及跳转到Mainactivity!
package com.example.administrator.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
/**
* Created by Administrator on 2015/5/30.
*/
public class SplashyDemo extends Activity {
private long m_dwSplashTime=1000;
private boolean m_bPaused=false;
private boolean m_bSplashActive=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashdemo);
Thread splashTimer=new Thread()
{
public void run(){
try{
//wait loop
long ms=0;
while(m_bSplashActive && ms<m_dwSplashTime){
sleep(100);
if(!m_bPaused)
ms+=100;
}
Intent intent=new Intent(SplashyDemo.this,MainActivity.class);
startActivity(intent);
}
catch(Exception ex){
Log.e("Splash", ex.getMessage());
}
finally{
finish();
}
}
};
splashTimer.start();
}
@Override
protected void onPause() {
super.onPause();
m_bPaused=true;
}
@Override
protected void onResume() {
super.onResume();
m_bPaused=false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
switch(keyCode){
case KeyEvent.KEYCODE_MENU:
m_bSplashActive=false;
break;
case KeyEvent.KEYCODE_BACK:
/*两种退出方法*/
/* System.exit(0);*/
/* android.os.Process.killProcess(android.os.Process.myPid());*/
android.os.Process.killProcess(android.os.Process.myPid());
break;
default:
break;
}
return true;
}
}
1)变量解释:
m_dwSplashTime:long 类型,为闪屏界面停留的时间,这儿设置为3000也就是3秒
m_Paused: bool 类型,设置该变量可以使得程序暂停在闪屏界面
m_bSplashActive:bool类型,设置该变量可以跳过闪屏,从而快速竟如主程序界面
2)程序结构解释:
SplashyDemo继承自Activity,且是程序启动的第一个界面(查看),所以要实现闪屏,我们需要开启一个线程,以便在1秒钟之后进入主界面。这些主要有一个while循环来实现
在1秒钟结束或者用户选择跳过闪屏后,程序会调用startActivity函数来跳到主界面
第二种方法:
这是一个不能打断闪屏,只能被动的接受闪屏结束的方法 。对于这种方法,就不做实例了,如果读者自己感兴趣的话可以自己尝试着做一下。
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class StartActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_star);
// 闪屏的核心代码
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(StartActivity.this,
MainActivity.class); // 从启动动画ui跳转到主ui
startActivity(intent);
/* overridePendingTransition(
R.anim.push_left_out,R.anim.push_left_in);*/
StartActivity.this.finish(); // 结束启动动画界面
}
}, 1500);
}
}