apk在有刘海机型上不全屏有黑边解决方案

谢绝转载!谢谢!

项目问题

先上问题图:
apk在有刘海机型上不全屏有黑边解决方案_第1张图片

问题如上,左边刘海部分显示为黑边,右边显示导航栏,app没有全屏显示。

解决问题历程

为了解决上面问题,再网上开始各种找解决方案了,最开始以为很轻松,结果花了差不多一周时间,可能是太菜了,下面就记录下我的解决问题的历程吧,给自己留个备份,也给遇到同样问题的同行留个参考:

修改AndroidManifest.xml
1.在模块间 增加一行,因为刘海屏大部分都是宽屏,所以这行是增大适配比
2.新增这个resizeableActivity属性,但是这个属性其实跟1 的max_aspect重复了,所以这个可以不设置,而且这个需要设置compileSdkVersion 为24以上
3.设置显示主题,看名字就是全屏主题,但此全屏并不是我们想要的那种全屏。
4.设置targetSdkVersion=28,因为google从android9就出了一个全屏的方案,只需要设置targetSdkVersion至28就能自动适配全屏。
以上就是我在网上找到通过xml的方式来解决我前面说的问题,但没有解决掉,原因我后面会大概说下。

修改java代码

修改代码的解决方式网上也有很多,但大部分都没有解决掉,而且网上很多人的文章都是复制转载,甚至还没转载全,我想吐槽下,你至少也转全啊,图片都不转过来还说什么如图所示。我这里也就不列举那些乱七八糟的解决方案了,我直接上最终的修改方案吧:

  private void makeWindowFullScreen() {

		  this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
	          WindowManager.LayoutParams.FLAG_FULLSCREEN);
		  this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
	          | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
	          | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
	          | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
	          | View.SYSTEM_UI_FLAG_FULLSCREEN
	          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
	  );
	}

在这里 我要说一下,我这里是unity4.6工程,因为是很老的项目,所以网上那些通过修改xml的方式其实是google在Android9上提供的解决方案,其以下的根本解决不了,所以我在一些技术群里问问题的时候,一些技术老人就摆出很有经验的样子直接上来让你google百度真的让人无语。

以上就是我目前的解决流程,因为具体项目可能会导致我给出的方案不一定适合你,但至少能给你一定的参考,如有问题可以评论留言。谢绝转载,免得又缺胳膊少腿的。

小彩蛋:
1.如果发现屏幕在刘海侧是黑边,是因为屏幕按照刘海自动下移了,在xml里面加


		   

2.如果程序返回后台再切换回来发现又不是全屏了,在java代码的主activity下重载

  @Override protected void onResume()
  {
    super.onResume();
    mUnityPlayer.resume();
    WGPlatform.onResume();
    makeWindowFullScreen();//这里重新调用一下我上面的那个全屏代码可修复
  }

你可能感兴趣的:(apk在有刘海机型上不全屏有黑边解决方案)