如何在Android 11中调整手机屏幕中的应用程序?

2023-12-01

在 Android 11 之前,我已经轻松地将我的应用调整为全屏

我的旧手机的摄像头孔和基本按钮位于屏幕区域之外,我的新手机的摄像头孔和基本按钮位于屏幕区域内。

经过很少的设置,我的应用程序在旧手机上全屏显示。

样式.xml

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>   
        <item name="windowNoTitle">true</item>    
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
</style>

AndroidManifest.xml

<application
   ...       
   android:theme="@style/AppTheme.NoActionBar">
</application>

在我的新手机中安卓11,我找了很多Stackoverflow问题。我尝试了很多不同的解决方案。最后,我在我的应用程序的开头添加了以下代码OnCreate().

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
  window.attributes.layoutInDisplayCutoutMode =
      WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    WindowCompat.setDecorFitsSystemWindows(window, false)
 else {
      @Suppress("DEPRECATION")
      window.setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN
      )
    }

我想要靠近基本按钮和摄像头孔的边缘很窄,就像 Chrome 一样。

但我所能得到的只是应用程序和按钮(向下)以及应用程序和相机孔(向上)之间的宽裕度:

App 1

但我想要一个窄边距:

Ideal

类似于 Android 版 Chrome 浏览器:

My wish

我如何以编程方式执行此操作?

我无法在互联网(和 StackOverflow)中找到解决我的问题的任何线索

我也无法弄清楚如何识别给定手机的屏幕上是否有摄像头孔或者屏幕上是否有基本按钮。看起来它是基于DisplayCutout, WindowInsets and boundingRectTop and boundingRectBottom,但网上并没有真实清晰的使用示例。


答案会让很多人感到惊讶,就像它让我自己感到惊讶一样。经过数月的尝试和错误,以及屡屡受挫的帮助请求,直到我自己找到了解决方案。

它简单得令人不安,但同时,它也是银河系中最复杂的事情,包括尝试的勇气

神奇而秘密的路线是:

      <meta-data android:name="android.max_aspect" android:value="2.4"/>

2.4 为最大值screen height / screen width允许屏幕中的应用程序区域。

如果省略该语句,系统仍然assumes最大纵横比为 1.86。

我不知道为什么系统假设默认值这么低,如果今天的许多设备都有一个比率screen height /screen width大于1.86。

从我在问题中所写的内容来看,确实需要更改 Android 的标准样式之一

So in styles.xml:

<style name="AppTheme"> parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="windowNoTitle">true</item>   
    <item name="android:windowFullscreen">true</item>
</style>

In AndroidManifest.xml包括

  <application
    ... 
    android:theme="@style/AppTheme">
    <meta-data android:name="android.max_aspect" android:value="2.4"/>
    ...  
   <\application>  

这都是...

我发现的关于这个主题的唯一远程参考是在开发人员的官方博客上的 2017 年页面上this post.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Android 11中调整手机屏幕中的应用程序? 的相关文章

随机推荐