avatar

OPPO上架:未适配挖孔屏

问题

前一段时间安卓上架OPPO渠道审核没有通过。OPPO给出的回复为:OPPO Reno3\OPPO Reno3 Pro机型已经发布上市,为了不影响您的App正常上架,请您尽快做好适配工作,并且在附件中添加了未适配挖孔屏的截图(挖孔侧显示为一条黑边)。

解决方案

1.开启显示凹口模式
如果你没有凹口屏的真机,也可以在非凹口屏 P 版本手机或者 Android 模拟器中,开启 “模拟具有凹口的显示屏” 的设置项,然后再进行调试。
2.适配长屏幕的全面屏

  • 在 Android 8.0(API 26)及更高版本中,我们可以在 标签中使用 android:MaxAspectRatio 来声明其支持的屏幕最大宽高比。比如我们可以声明最大宽高比为 2.4:
1
2
<activity android:maxAspectRatio="2.4">
</activity>
  • 对于Android 7.1及更低版本,我们可以在 元素中添加名为 android.max_aspect 的 元素,如下所示:
1
<meta-data android:name="android.max_aspect" android:value="2.4" />

3.适配凹形屏幕
Google 为刘海屏显示方式提供了三种显示模式:

1
2
3
4
5
6
// 默认情况,全屏页面不可用刘海区域,非全屏页面可以进行使用
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 属性指定显示模式:
1
2
3
4
5
6
//value-v28/styles.xml
<style name="AppTheme.Launcher" parent="AppTheme">
<item name="android:windowBackground">@drawable/branded_launch_screens</item>
<item name="android:statusBarColor">@color/colorPrimary</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
  • 通过在代码中指定 Activity 的显示模式
1
2
3
4
5
6
7
8
9
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
getWindow().setAttributes(lp);
}
}

备注

文章内容参考了简书-石先,不用于商业用途,如有侵权请联系,我将尽快删除。
如果你需要适配Android低版本,可以将代码封装为方法,添加上@TargetApi(Build.VERSION_CODES.P)特性。

文章作者: tiger
文章链接: https://chenghu.online/posts/9d829433/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 tiger
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论