Android之沉浸式状态栏的认知误区

什么是沉浸式?

在玩游戏或者看电影的时候,都希望能让用户完全沉浸在其中,享受它们提供的娱乐内容,不会被其他一些无关的东西,如系统的界面元素所分心

Android 官方只有沉浸式模式(Immersive Mode)这种说法,基于这种理念,开发者通常会修改状态栏和导航栏的显示,尽量全屏化,延伸出“沉浸式状态栏”一词。

Android沉浸式模式的本质就是全屏化。处理方法是:隐藏状态栏 + 隐藏导航栏

 

常见误区

很多人以为下面这样设置,就是沉浸式状态栏,其实不然。这不算沉浸式,仅仅是让导航栏,状态栏都透明化而已。当然,这个理念与沉浸式模式是一致的(尽量让用户不被系统无关UI 干扰)。

 

真正标准的沉浸式模式

  • 一般除了像游戏或者视频软件这类特殊的应用,大多数的应用程序都是用不到沉浸式模式的。
  • 真正要求
        1)界面默认情况下是全屏的,状态栏和导航栏都不会显示。
        2)当我们需要用到状态栏或导航栏时,只需要在屏幕顶部向下拉,或者在屏幕右侧向左拉,状态栏和导航栏就会显示出            来,此时界面上任何元素的显示或大小都不会受影响。
        3)过一段时间后如果没有任何操作,状态栏和导航栏又会自动隐藏起来,重新回到全屏状态。  
  • 注意:沉浸式状态栏只对API >= 19 (Android 4.4)以上有效。
  • 如何使用:需要重写Activity的onWindowFocusChanged()方法,然后加入如下逻辑即可:
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_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }
    }

}

另外,为了让我们的界面看上去更像是游戏,这里我将MainActivity设置成了横屏模式。效果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值