Cocos 解决华为等安卓机底部带虚拟导航栏


1、引言

  最近项目就要上线了,发现华为等一列手机带底部导航栏。挡着了底部游戏的一些画面,虽然华为可以自由设置。但是还是很不方便,难道用户进入我们的游戏还要再设置一次,这未免太不方便了。为了给用户带去更好的体验,我们打算做到自动隐藏,不用让用户来手动处理!

2、分析

  我们知道底部导航栏有时还是比较有用,但有时确实很烦人。比人游戏时我们就要更大限度的利用屏幕给用户带来更好的体验。什么时候隐藏?分为以下几种情况:

  • 当打开我们的游戏时,自动隐藏
  • 当从后台切回我们的游戏时,自动隐藏
  • 当游戏中我们手动滑出导航栏,又没进行操作时,自动隐藏
  • 当滑出状态栏时虚拟按键会跟着出来,也要处理让其和状态栏在不操作时自动隐藏

3、解决问题

3.1、找文件

我们首先到找到文件,我的文件位置是:

lua项目目录\Cocos\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxActivity.java

3.2、改代码

在如下位置添加两个引用:
这里写图片描述
上图红色部分代码如下;

import android.annotation.SuppressLint;
import android.view.View;

首先在末尾添加一个隐藏的方法,如图:
这里写图片描述
详细代码如下:

@SuppressLint("NewApi")
public void hideNavigationBar() {
    int uiFlags = 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 // hide nav bar
        | View.SYSTEM_UI_FLAG_FULLSCREEN; // hide status bar


    if( android.os.Build.VERSION.SDK_INT >= 19 ){ 
        uiFlags |= 0x00001000;    //SYSTEM_UI_FLAG_IMMERSIVE_STICKY: hide navigation bars - compatibility: building API level is lower thatn 19, use magic number directly for higher API target level
    } else {
        uiFlags |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
    }

    getWindow().getDecorView().setSystemUiVisibility(uiFlags);
}

然后需要在onCreate onResume 和onWindowFocusChanged 中调用上面方法:
我么还没有onWindowFocusChanged 方法,先写一个再调用!

这里写图片描述

详细代码如下:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
   super.onWindowFocusChanged(hasFocus); 
   if( hasFocus ) {
       //这里调用
       hideNavigationBar();
    }
}

下面的两处给出截图:

这里写图片描述
如果没有我们可以这么写:

@Override
protected void onCreate(Bundle savedInstanceState){
   hideNavigationBar();
   super.onCreate(savedInstanceState);
}

这里写图片描述

如果没有我们可以这么写:

@Override
protected void onResume() {
    hideNavigationBar();
    super.onResume();

    Cocos2dxHelper.onResume();
    this.mGLSurfaceView.onResume();
}

4、文件下载

  到这里,我们的文件已经改好了。没有手动修改的同学可以在这里点击下载


The End
  好了,今天的分享就到这里,如有不足之处,还望大家及时指正,随时欢迎探讨交流!!!

猜你喜欢

转载自blog.csdn.net/lxt610/article/details/81246247