Android适配双面屏手机

努比亚X是双面屏了,VIVO下个月也要发布一款双面屏手机,两个屏幕宽度应该是一致的,高度有所不同,背屏的高度会比主屏小一些,因此需要进行必要的尺寸适配。

如果什么都不做,那么Activity会自动销毁重建,也谈不上适配了,

所以我们需要配置ActivityconfigChanges属性,并且重写onConfigurationChanged方法,让其处理screenSize改变,完成相应的适配。

总体上有两点需要适配:

  1. 资源文件(图片、尺寸)

  2. 依赖屏幕宽高的控件需要在切屏的时候更新依赖数据

以上内容详细可以参考双屏第三方应用自由切换适配指导意见

适配完毕之后,我们可以通过来如下命令,模拟主屏和副屏切换动作。

adb shell wm size 1080x2340
adb shell wm size 1080x1920

可能遇到的问题

  1. 上面的命令需要root权限。

  2. 如果没有root的手机,那么可以用模拟器。

  3. 如果APP只支持armeabi,那么市面上的模拟器都安装不了。

  4. 切屏的时候发现Activity销毁重建了。

针对上面第3点,有以下两种解决方案:
  1. 如何让Genymotion支持Armeabi

  2. 将gradle下面的abiFilters "armeabi"删除,测试完毕之后再补上。

第一种解决方案我试了之后发现有些第三方SDK在loadLibrary的时候报找不到so的异常。

第二种解决方案我试了一下,没发现闪退问题,可以完成测试。

因此推荐顺序为:root手机 > 方案二 > 方案一

至于第4点,有以下解决方案:

我是在尝试适配努比亚X的时候出现的问题,努比亚的主屏是1080x2280、副屏是720x1520,系统认为这两种屏幕之间的切换是属于屏幕的物理大小改变了,因此我们还需要增加一个flag:smallestScreenSize。如果以后有新出的双面屏像素密度都发生变化了,那么我们就再加一个density

推荐阅读更多精彩内容