ITPub博客

首页 > IT职业 > IT职场 > 了解真正的“沉浸式”模式

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

IT职场 作者:smith12us 时间:2021-09-09 09:59:39 0 删除 编辑

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

步骤:

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

[代码]xml代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

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

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

 

    

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@mipmap/ver_bg"

        android:scaleType="centerCrop"/>

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

            );

        }

    }

}

竖屏模式

图片描述

游戏的横屏模式

修改AndroidManifest.xml文件

[代码]xml代码:

?

1

2

3

4

5

6

7

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

            

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

 

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

            

        

 

图片描述

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

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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3181/viewspace-2814744/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-30

  • 博文量
    80
  • 访问量
    515