凹凸屏

普通activity可以通过设置toolbar/statusbar等全面显示,但是如splashActivity就必须通过设置了

包括navigator也是在style里面设置即可,不然有河边问题,而且图片会压缩或拉伸

1. 适配长屏幕的全面屏

我们首先要确保应用在长屏幕设备上 (纵横比大于或等于 18:9) 也能够正常运行,尤其是现在市面上长屏手机越来越多,而且这些设备往往同时还采用了凹口屏设计。
当我们的应用布局无法适应任意大的宽高比,可以通过设置最大宽高比来声明,Google 建议这个最大比率为 2.4(12:5)

  • 在 Android 8.0(API 26)及更高版本中,我们可以在 标签中使用 android:MaxAspectRatio 来声明其支持的屏幕最大宽高比。比如我们可以声明最大宽高比为 2.4:



 ...

  • 对于Android 7.1及更低版本,我们可以在 元素中添加名为 android.max_aspect 元素,如下所示:



注意:如果设置了最大宽高比,请不要忘记也设置 android:resizeableActivity false。否则,最大宽高比无意义。

这是因为从 Android 7.0 开始,应用的多窗口模式变为默认启动。在多窗口模式下,默认你的应用已经进行了全面屏适配,如果我们不想应用在多窗口模式下运行,可以修改以下属性:

android:resizeableActivity="false"

2. 适配凹形屏幕

Google 为刘海屏显示方式提供了三种显示模式:

// 默认情况,全屏页面不可用刘海区域,非全屏页面可以进行使用
public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT = 0;
// 允许页面延伸到刘海区域
public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES = 1;
// 不允许使用刘海区域
public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2;

我们可以通过下面两种方式来指定应用在凹形屏幕的显示模式:

  • 在主题中加入android:windowLayoutInDisplayCutoutMode 属性指定显示模式:
// value-v28/styles.xml
 
  • 通过在代码中指定 Activity 的显示模式

我们可以在 Activity 的 onCreate 中指定凹形屏幕的显示模式:

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= 28) {
            WindowManager.LayoutParams lp = getWindow().getAttributes();
            lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
            getWindow().setAttributes(lp);
        }
}

你可能感兴趣的:(Android-app)