很多应用都有按下图标之后首先显示一个欢迎界面,再跳转到主activity的功能,现在来实现以下。我主要参考了CSDN上的一个仿weichat开场界面的博客,相当于一个简易版本吧。
方法一,利用系统提供的函数。
首先要新创建一个class,名为Welcome.java,主activity为MainActivity.java。
这里利用了两个函数用来把R.layout.start的内容全屏显示。
1)getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //消除状态栏
注意:
public void addFlags(int flags) {
setFlags(flags, flags);
}
所以这个函数也可以写成:getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
2)requestWindowFeature(Window.FEATURE_NO_TITLE); //消除标题栏
这个函数要写在setContentView之前,否则无效。
开场画面活动,Welcome.java
package com.xujin.smarttaskman;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
import android.view.WindowManager;
/** 开场欢迎动画 */
public class Welcome extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//全屏显示welcome画面
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.start);
//延迟0.7秒后执行run方法中的页面跳转
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(Welcome.this, MainActivity.class);
startActivity(intent);
Welcome.this.finish();
}
}, 700);
}
}
然后是最基本的xml文件
start.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/welcome"
android:background="#ffffff"
android:scaleType="centerCrop"/>
</LinearLayout>
注意,这里的scaleType一定要centerCrop(使图片覆盖整个ImageView),否则显示效果很糟糕。
以上这种方法可能出现瞬间出现非全屏模式的错误。
方法二,更改AndroidMainfest.xml的内容。
设置Welcome为点开按钮后首先显示的活动,them要设置成无标题栏全屏。
<activity
android:name="com.xujin.smarttaskman.Welcome"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>