折叠屏适配

912 阅读2分钟

由于业务需要,一次性适配了五款折叠屏手机,现将折叠屏适配的方法总结如下:

收集待适配机型:

1. matexs 2480*2200,xs DPI 480 

使用values-sw733dp-v13 

2. matex2 2480*2200,DPI 520 

 使用values-sw676dp-v13 

3. 华为在研机 2480*2200,DPI 500 

使用values-sw704dp-v13 

4. honor magic v: 2272*1984,DPI 480 

使用values-sw661dp-v13

5. OPPO 折叠屏( Find N) 主屏参数:1920宽:1792高;小屏参数:988:1972,DPI 440

使用values-sw651dp-v13

界面适配方法:

1. 对机型做判断,使用指定布局

2. 通过layout文件夹设定参数,使用指定布局

以上两个方法,需要重写所有界面布局,工作量巨大,可行性差

3. 调整布局,尽量少用绝对布局,多用相对布局、比例布局,保证主流机型的显示效果的前提下适配折叠屏 

4. 图片使用.9,或者跟据分辨率下发指定尺寸

5. 由于我们app同时适配平板,会使用到大量values-swXXdp,影响到折叠屏效果

为同时保证平板和折叠屏,让各折叠屏使用指定的values-swXXdp,具体值见上面,其余保持不变

6. 双屏适配,只适用于华为折叠屏,并且主要用于电商。其它app需要增加引导,让用户开启双屏,同时不同厂商的折叠屏需要另行适配

功能适配方法:

为保证应用程序在展开/折叠过程无缝切换,您需要做应用连续性的设计,默认情况下会重启

1. android: configChanges = "screenSize|smallestScreenSize|screenLayout"

2. onConfigurationChanged() 方法,通过该方法的Configuration参数获得屏幕的分辨率等信息,就可以针对不同比例屏幕下的应用界面布局做相应调整

3. 如果您的应用必须进行重新走生命周期来以响应屏幕切换,需要进行状态的保存和恢复。

您可以通过OnSaveInstanceState()和ViewModel对象来进行之前状态保存和后续的恢复。即,在销毁activity之前,通过onSaveInstancesState()存储状态, 在onCreate() or onRestoreInstanceState()进行状态的恢复。

4. 不要在OnDestroy()中调用finish()或其他自行终止进程。这将导致应用程序在设备折叠或展开时关闭、闪退等问题。

其它资料:

华为

developer.huawei.com/consumer/cn…

OPPO 折叠屏( Find N)

操作指导:open.oppomobile.com/wiki/doc#id… 

实操页面:open.oppomobile.com/cloudmachin…