很多应用都有按下图标之后首先显示一个欢迎界面,再跳转到主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>
以上这种方法可能出现瞬间出现非全屏模式的错误。
设置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>