Quick-cocos2d-x 小米 Mix 全面屏适配

栏目: IOS · 发布时间: 5年前

内容简介:有玩家反馈我们的游戏在 Mix 上面无法全屏显示, 上下会有黑边. 搜索了下, 网上还没有绍如何适配的相关文章, 这里介绍下我们是如何做的.我们可以在看看小米官方好的, 我们先按照官方的方法修改下

有玩家反馈我们的游戏在 Mix 上面无法全屏显示, 上下会有黑边. 搜索了下, 网上还没有绍如何适配的相关文章, 这里介绍下我们是如何做的.

我们可以在看看小米官方 对全面屏适配工作的介绍 :

这些变化也影响了手机软件的设计,最值得开发者关注的,是以下两点:

  1. 更大的屏幕高宽比
  2. 虚拟导航键

好的, 我们先按照官方的方法修改下 max_aspect 的值为 2 以上

<meta-dataandroid:name="android.max_aspect"android:value="2.1"/>

运行下, 发现顶部的黑条不见了, 但是底部的虚拟导航键还在. 我们接着看官方的文档:

Quick-cocos2d-x 小米 Mix 全面屏适配

然而这几种效果都不是我们想要的, 我们想要是隐藏 虚拟导航键 . Google 一下, 很容易搜索到这段代码:

/**
    * 隐藏虚拟按键,并且全屏
    */
   protected void hideBottomUIMenu(){
       //隐藏虚拟按键,并且全屏
       if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
           View v = this.getWindow().getDecorView();
           v.setSystemUiVisibility(View.GONE);
       } else if (Build.VERSION.SDK_INT >= 19) {
           //for new api versions.
           View decorView = getWindow().getDecorView();
           int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                           | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
           decorView.setSystemUiVisibility(uiOptions);
       }
   }

加上之后发现导航键真的没有了, 但是当你点击屏幕时, 它又出现了. 继续搜索发现了 这篇文章 , 按照文章中的提示进行修改你的 AppActivity :

    private Cocos2dxGLSurfaceView glSurfaceView;
    protected void onCreate(Bundle savedInstanceState, SplashEnum splash,long duration, boolean debug){
        ...
        View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
        ...
    }
    @Override
    public Cocos2dxGLSurfaceView onCreateView(){
        glSurfaceView = super.onCreateView();
        this.hideSystemUI();
        return glSurfaceView;
    }
    @Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus)
        {
            this.hideSystemUI();
        }
    }
    private void hideSystemUI()
    {
        // Set the IMMERSIVE flag.
        // Set the content to appear under the system bars so that the content
        // doesn't resize when the system bars hide and show.
        glSurfaceView.setSystemUiVisibility(
                Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                        | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                        | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }

搞定. 看下最终的效果:

Quick-cocos2d-x 小米 Mix 全面屏适配


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Haskell School of Expression

The Haskell School of Expression

Paul Hudak / Cambridge University Press / 2000-01 / USD 95.00

Functional programming is a style of programming that emphasizes the use of functions (in contrast to object-oriented programming, which emphasizes the use of objects). It has become popular in recen......一起来看看 《The Haskell School of Expression》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具