三星Galaxy S8全屏模式

19

最新的三星智能手机具有一个有趣的功能,称为全屏幕(或在营销术语中称为无限显示)。在此模式下,应用程序也覆盖了主页/返回按钮所在的部分显示区域。通常的应用程序不会覆盖此区域,使其保持黑色。但是三星的原生应用程序会覆盖该区域。

问题:如何实现这种效果?我的意思是,我应该使用什么样的清单声明或编程调用(可能是三星的旧API)?


沉浸式全屏。在我遇到的大多数系统上隐藏按钮和导航栏。如果S8不同,我不知道你该怎么做。 - Zoe stands with Ukraine
3个回答

35

为了使新的三星Galaxy S8和LG G6手机支持全屏,请在AndroidManifest.xml文件中<application>标签下添加以下内容:

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

当值为2.1时,表示宽高比为18.5:9(默认情况下,您的应用程序将默认为16:9-1.86的最大比率)。有关更多信息,请参见:Android Blog

或者,您也可以为应用程序或活动设置以下属性:

android:resizeableActivity="true"

由于文档说明如下(链接):

如果一个activity的android:resizeableActivity属性设置为true,就不需要设置最大宽高比。 如果您的应用程序的目标API级别为24或更高,则此属性默认为true。


1
此答案不保证在S8上进行适当的调整。如果您构建任何需要测量视图的复杂应用程序,则您的视图测量将受到影响,具体取决于导航工具栏是否固定/未固定、可见/不可见,甚至虚拟键盘是否可见/不可见。到目前为止,看起来您必须重新测量所有视图,因为“resizeableActivity”无法处理太多内容。 - portfoliobuilder

1
要想获得全屏,您必须重写 onWindowFocusChanged 方法并创建 decorView 对象,并将 System_UI 标志添加到其中。
@Override
    public  void onWindowFocusChanged(boolean  hasFocus){
        super.onWindowFocusChanged(hasFocus);
        View decorView = getWindow().getDecorView();
        if(hasFocus){

        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY  // this flag do=Semi-transparent bars temporarily appear and then hide again
                    |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  // Make Content Appear Behind the status  Bar
                    |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  // it Make Content Appear Behind the Navigation Bar
                    |View.SYSTEM_UI_FLAG_FULLSCREEN  // hide status bar
                    |View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        }
    }

只有在Galaxy S8的设置中将您的应用程序设置为全屏应用程序时,它才能正常工作:显示->全屏应用程序。 - Barmaley

-5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接