创建Android应用启动界面

fmms 13年前

每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO、公司的LOGO或者开发者信息。如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。

  • 制作Splash界面
    突出产品LOGO,产品名称,产品主要特色;
    注明产品的版本信息;
    注明公司信息或者开发者信息;
    背景图片,亦可以用背景颜色代替;
  • 除了等待还能做点什么
    大多数的Splash界面都是会等待一定时间,然后切换到下一个界面;
    其实,在这段时间里,可以对系统状况进行检测,比如网络是否通,电源是否充足;
    或者,预先加载相关数据;
    为了能让启动界面展现时间固定,需要计算执行以上预处理任务所花费的时间,那么:启动界面SLEEP的时间=固定时间-预处理任务时间
  • 源码示例(以Wordpress的Android客户端为例)
    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>

    转载地址:  http://www.cnblogs.com/xiongbo/archive/2011/05/17/splash.html