美文网首页
Android折叠屏适配

Android折叠屏适配

作者: 馒头炖土豆 | 来源:发表于2022-09-28 12:01 被阅读0次

手机信息

品牌:OPPO
型号:PEUM00
Android版本:11
ColorOS版本:V12

屏幕信息

完全展开时:
宽:1920
高:1572
像素比例:2.75
每寸像素:440

完全折叠时:
宽:988
高:1762
像素比例:2.75
每寸像素:440

目的一:实时掌握屏幕的折叠情况,最起码能拿到是叠起还是展开

参考文章1:https://zhuanlan.zhihu.com/p/455215266
参考文章2:https://blog.csdn.net/Vaccae/article/details/125383573

探索过程:
参考文章1使用的库:api "androidx.window:window:1.0.0-alpha09"
参考文章2使用的库:api "androidx.window:window:1.0.0"

按照文章的思路,两种方法最终都会获取如下对象:

val foldingFeature = layoutInfo.displayFeatures.filterIsInstance<FoldingFeature>().firstOrNull()

但是foldingFeature始终为空,通过打印layoutInfo.displayFeatures的结果看,
layoutInfo.displayFeatures里面的集合是空,因此想通过FoldingFeature来拿到屏幕状态就不能实现

但是,通过以下代码却可以在屏幕展开或者叠起后,实时拿到屏幕的宽高信息,注意:这个方法只在屏幕宽高变化后才会调用:

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    Log.i("test111", "screenHeightDp:" + newConfig.screenHeightDp + ", screenWidthDp:" + newConfig.screenWidthDp);
}

因此我决定在这个方法中对页面中的某些控件进行操作,比如弹出的DrawerLayout、Dialog等,以DrawerLayout举例说明:
DrawerLayout在弹出状态下,对屏幕进行折叠和展开操作,DrawerLayout的宽度不会随之变化,因此可以在这个监听中根据屏幕宽度对DrawerLayout的宽度进行实时修改。

目的二:页面适配

1:我们APP中的页面使用的是dimen这种以360DP的屏幕宽度为基础等比放大的方法,当屏幕折叠起来的时候,使用dimen显示是正常的,但是当屏幕展开后,由于屏幕的宽度变大了,因此页面里面的布局也随之等比放大了,为此我们进行了讨论,最终决定将屏幕宽度的上限定为600DP,小于600DP还是按照dimen的方法进行等比放大,大于等于600DP的则使用正常的DP,而不再使用dimen


image.png image.png

2:app中尺寸使用标准

xml中,还是要使用dimen,而不是直接使用DP:

正确:
android:paddingHorizontal="@dimen/dp_12"
android:paddingVertical="@dimen/dp_5"

错误:
android:layout_height="30dp"
android:textSize="16sp"

代码中同XML:

正确:
SizeUtils.getDimenFloat(R.dimen.dp_12)
SizeUtils.getDimen(R.dimen.dp_12)

错误:
DisplayUtils.dp2px(context, 12)等

3:控件适配:比如drawlayout,当抽屉在打开的状态下,进行屏幕折叠,这时候会发现抽屉的宽高没变化(这里有个前提是:Activity没有重新走生命周期),因此这种情况下也需要适配

目的三:折叠和展开时页面不重新启动

在清单文件Activity的声明中加入以下配置:

android:configChanges="screenSize|orientation|smallestScreenSize|screenLayout"

相关文章

  • Android折叠屏适配

    手机信息 品牌:OPPO型号:PEUM00Android版本:11ColorOS版本:V12 屏幕信息 完全展开时...

  • 安卓适配

    ------刘海屏------屏幕适配 | Android 刘海屏适配总结Android刘海屏适配方案Androi...

  • Android 折叠屏适配攻略

    随着三星 Galaxy Fold 和 华为 Mate X 的发布,折叠屏手机开始进入大家的视线。在改变手机体验的同...

  • 华为折叠屏适配

    华为折叠屏适配方案:华为在大屏设备上有系统级别的支持方案,华为平行视界,能够支持折叠屏分屏显示 华为折叠屏分屏显示...

  • 折叠屏就要来了,适配逼死 Android 开发?

    1. 异型屏还没适配好,折叠屏就要来了,Android 的碎片化,让开发者又多掉了不少头发。 北京时间 11 月 ...

  • Android折叠屏手机适配实践

    本文介绍了厂商对适配折叠屏的要求及解决方案。 本文首发:http://yuweiguocn.github.io/ ...

  • 折叠屏来了,开发者们准备好了吗?

    产品经理:老板,折叠屏就要来了,跟不跟? 老板:跟! 前端工程师:虽说折叠屏还是安卓,但是这个适配工作可让人头大…...

  • Android Studio 图片适配/使用之SVG

    前言 适配可以说是Android的老大难问题了,Android厂商众多,设备碎片化严重.大屏小屏,全面屏,异形屏数...

  • Android全面屏适配

    Android全面屏适配 方案1: AndroidManifest.xml 文件添加属性: 应用适配建议采用me...

  • 显示框架之VirtualDisplay 的数据源

    Android 支持多个屏幕,主屏(主显的物理屏),虚拟屏(非物理屏),外部显示屏(折叠屏),其中主屏和外部显示屏...

网友评论

      本文标题:Android折叠屏适配

      本文链接:https://www.haomeiwen.com/subject/gylcartx.html