1.用handler的postDelayed实现
转载自:http://www.eoeandroid.com/blog-535302-2331.html
- <SPAN style="FONT-SIZE: 18px">每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO、公司的LOGO或者开发者信息。如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。
- 1.制作Splash界面
- 突出产品LOGO,产品名称,产品主要特色;
- 注明产品的版本信息;
- 注明公司信息或者开发者信息;
- 背景图片,亦可以用背景颜色代替;
- 2.除了等待还能做点什么
- 大多数的Splash界面都是会等待一定时间,然后切换到下一个界面;
- 其实,在这段时间里,可以对系统状况进行检测,比如网络是否通,电源是否充足;
- 或者,预先加载相关数据;
- 为了能让启动界面展现时间固定,需要计算执行以上预处理任务所花费的时间,那么:启动界面SLEEP的时间=固定时间-预处理任务时间;
- 3.源码示例</SPAN>
- <SPAN style="FONT-SIZE: 14px">AndroidMenifest.xml
- <activity android:icon="@drawable/app_icon"
- android:screenOrientation="portrait"
- android:name=".splashScreen"
- android:theme="@android:style/Theme.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- splashScreen.java
- package org.wordpress.android;
- import android.app.Activity;
- import android.content.Intent;
- import android.content.pm.PackageInfo;
- import android.content.pm.PackageManager;
- import android.content.pm.PackageManager.NameNotFoundException;
- import android.graphics.PixelFormat;
- import android.os.Bundle;
- import android.os.Handler;
- import android.view.WindowManager;
- import android.widget.TextView;
- public class splashScreen extends Activity {
- /**
- * Called when the activity is first created.
- */
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- getWindow().setFormat(PixelFormat.RGBA_8888);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
- setContentView(R.layout.splashscreen);
- //Display the current version number
- PackageManager pm = getPackageManager();
- try {
- PackageInfo pi = pm.getPackageInfo("org.wordpress.android", 0);
- TextView versionNumber = (TextView) findViewById(R.id.versionNumber);
- versionNumber.setText("Version " + pi.versionName);
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- new Handler().postDelayed(new Runnable() {
- public void run() {
- /* Create an Intent that will start the Main WordPress Activity. */
- Intent mainIntent = new Intent(splashScreen.this, wpAndroid.class);
- splashScreen.this.startActivity(mainIntent);
- splashScreen.this.finish();
- }
- }, 2900); //2900 for release
- }
- }
- splashscreen.xml
- <!--
- android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。
- android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置
- -->
- <LinearLayout android:id="@+id/LinearLayout01"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:gravity="center|center"
- android:background="@drawable/home_gradient"
- android:orientation="vertical">
- <!--
- android:scaleType是控制图片如何resized/moved来匹对ImageView的size
- CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
- -->
- <ImageView android:layout_marginTop="-60dip"
- android:paddingLeft="20dip"
- android:paddingRight="20dip"
- android:scaleType="centerInside"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/wordpress_logo"
- android:src="@drawable/wordpress_home">
- </ImageView>
- <!--
- android:typeface 字体风格
- -->
- <TextView android:text="@+id/TextView01"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dip"
- android:typeface="serif"
- android:shadowDx="0"
- android:shadowDy="2"
- android:shadowRadius="1"
- android:shadowColor="#FFFFFF"
- android:textColor="#444444"
- android:textSize="20dip"
- android:id="@+id/versionNumber"
- android:gravity="bottom">
- </TextView>
- </LinearLayout></SPAN>
<span style="font-size:18px;">每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO、公司的LOGO或者开发者信息。如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。
1.制作Splash界面
突出产品LOGO,产品名称,产品主要特色;
注明产品的版本信息;
注明公司信息或者开发者信息;
背景图片,亦可以用背景颜色代替;
2.除了等待还能做点什么
大多数的Splash界面都是会等待一定时间,然后切换到下一个界面;
其实,在这段时间里,可以对系统状况进行检测,比如网络是否通,电源是否充足;
或者,预先加载相关数据;
为了能让启动界面展现时间固定,需要计算执行以上预处理任务所花费的时间,那么:启动界面SLEEP的时间=固定时间-预处理任务时间;
3.源码示例</span>
<span style="font-size:14px;">AndroidMenifest.xml
<activity android:icon="@drawable/app_icon"
android:screenOrientation="portrait"
android:name=".splashScreen"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
splashScreen.java
package org.wordpress.android;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Handler;
import android.view.WindowManager;
import android.widget.TextView;
public class splashScreen extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
setContentView(R.layout.splashscreen);
//Display the current version number
PackageManager pm = getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo("org.wordpress.android", 0);
TextView versionNumber = (TextView) findViewById(R.id.versionNumber);
versionNumber.setText("Version " + pi.versionName);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
new Handler().postDelayed(new Runnable() {
public void run() {
/* Create an Intent that will start the Main WordPress Activity. */
Intent mainIntent = new Intent(splashScreen.this, wpAndroid.class);
splashScreen.this.startActivity(mainIntent);
splashScreen.this.finish();
}
}, 2900); //2900 for release
}
}
splashscreen.xml
<!--
android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。
android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置
-->
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center|center"
android:background="@drawable/home_gradient"
android:orientation="vertical">
<!--
android:scaleType是控制图片如何resized/moved来匹对ImageView的size
CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
-->
<ImageView android:layout_marginTop="-60dip"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:scaleType="centerInside"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/wordpress_logo"
android:src="@drawable/wordpress_home">
</ImageView>
<!--
android:typeface 字体风格
-->
<TextView android:text="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:typeface="serif"
android:shadowDx="0"
android:shadowDy="2"
android:shadowRadius="1"
android:shadowColor="#FFFFFF"
android:textColor="#444444"
android:textSize="20dip"
android:id="@+id/versionNumber"
android:gravity="bottom">
</TextView>
</LinearLayout></span>
2.用动画的方式实现