再打開手機app的時候,最先映入我們眼帘的是一個覆蓋手機全屏的歡迎界面,在這個界面顯示出來的時候整個手機屏幕只會顯示這一個界面,上面的標題欄,以及手機最頂端的狀態欄都會消失,只有歡迎頁面結束跳轉到其他頁面時,標題欄和狀態欄才回又顯示出來。 現在我們就來製作一下歡迎界面。 歡迎界面的設置 首先,我們需 ...
再打開手機app的時候,最先映入我們眼帘的是一個覆蓋手機全屏的歡迎界面,在這個界面顯示出來的時候整個手機屏幕只會顯示這一個界面,上面的標題欄,以及手機最頂端的狀態欄都會消失,只有歡迎頁面結束跳轉到其他頁面時,標題欄和狀態欄才回又顯示出來。 現在我們就來製作一下歡迎界面。
歡迎界面的設置
首先,我們需要先創建一個Activity來承載這樣一個。首先找到res文件夾下的Layout文件夾,創建一個Activity用於承載歡迎界面,也可以直接利用已經創建好的MainActivity,在使用其他的Activity時,要把預設的訪問界面,需要在AndroidManifest.xml文件里,把預設MainActivity改為歡迎界面的Activity。在Activity中可以設置為頁面的背景圖片,同樣可以添加一個imageView控制項來進行顯示圖片,把背景圖片統一放到mipmap文件夾中。
android:background="@mipmap/welcome"
//或者
<ImageView
android:id="@+id/iv_man"
android:layout_width="67dp"
android:layout_height="202dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:background="@drawable/intro_item_manrun_1"
android:visibility="visible" />
添加圖片完成後,下麵就是設置標題欄和視窗的消失。在setContentView(R.layout.activity_main)之前添加一些方法控制著他們消失
//全屏顯示,隱藏視窗所有裝飾
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
//標題是屬於View的,所以視窗所有的修飾部分被隱藏後標題依然有效,需要去掉標題
requestWindowFeature(Window.FEATURE_NO_TITLE);
正常情況下requestWindowFeature(Window.FEATURE_NO_TITLE)是可以生效的,但是當Activity繼承子AppCompatActivity的時候,這個就失效了,不過不用擔心,還有以下幾種解決的辦法
// 手動在oncreate里調用hide()
if (getSupportActionBar() != null){
getSupportActionBar().hide();
}
// 第二種最簡單 直接用supportrequestwindowFeature好了:
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
// 第三種 直接修改style 缺點直接全局了(註意繼承)
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
狀態欄設置透明
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}