制作启动页面的思路是这样:启动一个activity作为Splash Screen,延迟一定时间后再跳转到主要activity。
注意写 ImageView 标签后会报一个警告:[Accessibility] Missing contentDescription attribute on image
解决方法就是加上这个属性:
下面是Splash Screen的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/imageView1"
android:contentDescription="@string/app_name"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:scaleType="fitXY"
/>
</RelativeLayout>
整个布局只有一个ImageView。
注意写 ImageView 标签后会报一个警告:[Accessibility] Missing contentDescription attribute on image
解决方法就是加上这个属性:
android:contentDescription="@string/app_name"
第14行属性【android:scaleType = "fitXY"】的作用是把图片不按比例扩大/缩小到父View的大小显示。
public class MainActivity extends Activity {
private int SPLASH_DISPLAY_LENGTH = 3000; // 延迟三秒
private ImageView splashImg = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
splashImg = (ImageView)findViewById(R.id.imageView1);
splashImg.setImageResource(R.drawable.splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(MainActivity.this,
Lost_Found_Activity.class);
MainActivity.this.startActivity(mainIntent);
MainActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}
说明:
第9~11行代码:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
它的作用是隐去app的标题并且全屏显示当前的activity(就是说屏幕上方的通知栏也会被遮盖掉)。
第15行代码【splashImg.setImageResource(R.drawable.splash);】指定启动页图片,splash是图片的名字,将它放到工程中res里面的drawable文件夹中,Eclipse会把资源文件添加到工程里面。
然后是Splash Screen的主体:【Handler().postDelayed(...)...】 的作用是延迟 SPLASH_DISPLAY_LENGTH (单位是毫秒),然后执行 run() 里面内容。在这里是跳转至Lost_Found_Activity,并且关闭当前的activity。