继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

了解真正的“沉浸式”模式

浮云间
关注TA
已关注
手记 146
粉丝 16
获赞 47

玩游戏和看视频就是最典型的“沉浸式”模式的效果,将状态栏、ActionBar、导航栏等系统元素全部隐藏,只留下主体内容部分。

步骤:

1、新建一个空的项目,修改布局文件中的代码

[代码]xml代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

<?xml version="1.0" encoding="utf-8"?>

<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">

 

    <ImageView

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:src="@mipmap/ver_bg"

        android:scaleType="centerCrop"/>

</RelativeLayout>

2、修改MainActivity中的代码

方法1

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import android.graphics.Color;

import android.os.Build;

import android.os.Bundle;

import android.support.v7.app.ActionBar;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

 

public class MainActivity   extends AppCompatActivity   {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        immerseView();

    }

 

    private void immerseView() {

        if (Build.VERSION.SDK_INT >= 21) {

            View   decorView = getWindow().getDecorView();

            int option = View.SYSTEM_UI_FLAG_FULLSCREEN |   View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

            decorView.setSystemUiVisibility(option);

            getWindow().setNavigationBarColor(Color.TRANSPARENT);//将导航栏颜色设置为透明

            getWindow().setStatusBarColor(Color.TRANSPARENT);//将状态栏颜色设置为透明

        }

        ActionBar   actionBar = getSupportActionBar();

        actionBar.hide();//隐藏ActionBar

    }

}

方法2、重写onWindowFocusChanged方法

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

import android.os.Build;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

 

public class MainActivity   extends AppCompatActivity   {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

 

    @Override

    public void onWindowFocusChanged(boolean hasFocus) {

        super.onWindowFocusChanged(hasFocus);

        if (hasFocus &&   Build.VERSION.SDK_INT >= 19) {

            View   decorView = getWindow().getDecorView();

            decorView.setSystemUiVisibility(

                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE

                    |   View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

                    |   View.SYSTEM_UI_FLAG_FULLSCREEN

                    |   View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

                    |   View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

                    |   View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

            );

        }

    }

}

竖屏模式

5bb86919000190d103280577.jpg

游戏的横屏模式

修改AndroidManifest.xml文件

[代码]xml代码:

?

1

2

3

4

5

6

7

<activity android:name=".MainActivity" android:screenOrientation="landscape">

            <intent-filter>

                <action android:name="android.intent.action.MAIN"/>

 

                <category android:name="android.intent.category.LAUNCHER"/>

            </intent-filter>

        </activity>

 

5bb8692400014a4505800328.jpg

此时,已可实现真正的“沉浸式”效果,界面默认情况下是全屏的,状态栏和导航栏都不会显示,当我们需要时,只需要在屏幕向下拉或屏幕右侧向右拉即可显示相应的状态栏和导航栏,过一段时间如果没有任何操作,状态栏和导航栏又会自动隐藏起来,重新回到全屏状态。

原文链接:http://www.apkbus.com/blog-844891-61495.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP