像QQ,微博,360等手机应用大部分的应用启动的一个页面都是显示自己产品的logo,不但可以打下广告还可以掩饰后台加载的行为,今天在自己的应用加上了这个功能,简单的记录总结一下。
其中一个显示启动页的方法就是使用Handle的postDelayed来计时显示,注意尽量不要用以前java时候学到线程知识直接去使用,因为android的UI操作并不是线程安全的,如果有多个线程并发操作UI组件,可能有线程安全问题,所以android有一个规则:只允许UI线程修改Activity的UI组件,所以直接使用新线程是不能更新UI组件的,解决这个问题的一个方法就是是用Handler实现线程通信,代码如下。
Splash.java
package com.vae;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class Splash extends Activity{
private final int SPLASH_DISPLAY_LENGHT = 3000; //延迟三秒
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(Splash.this,MainActivity.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
}
splash.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical">
<ImageView android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:scaleType="fitCenter"
android:src="@drawable/splash">
</ImageView>
</LinearLayout>
工程加入splash类和splash.xml,记得加入后在AndroidMainfest中配置Splash,再拿个splash图片放drawable就可以了,非常详细了。。
运行结果