如何处理不同设备和屏幕尺寸的适配问题?
本文参与了思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。
为了实现“基于同一套系统能力、适配多种终端形态”,HarmonyOS采用了“组件化”的设计方案,实现根据设备的资源能力和业务特征灵活裁剪,满足不同形态终端设备对操作系统的要求。
栅格布局GridRow和栅格子组件GridCol来解决多设备的动态布局问题。
栅格容器有columns、gutter、direction、breakpoints四个属性。
columns: 栅格布局的主要定位工具,设置栅格布局的总列数,默认12。
gutter: 设置元素之间的距离,决定内容间的紧密程度。
direction: 设置栅格子组件在栅格容器中的排列方向。
breakpoints:以设备宽度为基准,将应用宽度分成了几个不同的区间,即不同的断点。开发者可根据需要在不同的区间下实现不同的页面布局效果。
本文参与了思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。
鸿蒙开发处理不同设备和屏幕尺寸的适配问题主要通过以下几种方式:
总之,鸿蒙开发框架通过多种适配机制来处理不同设备和屏幕尺寸的适配问题,使开发者可以更方便地开发适配多种设备的应用程序。
本文参与了思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。
OpenHarmony从API 9开始,提供栅格布局GridRow和栅格子组件GridCol来解决多设备的动态布局问题。
栅格系统以设备的水平像素密度值vp为依据,将设备分成xs(超小型设备),sm(小型设备),md(中型设备),lg(大型设备)四种类型。其中设备的vp值和横向物理像素息息相关,如:在实际宽度为1440物理像素的屏幕上,1vp约等于3px。以下是官方的断点分类:
栅格布局GridRow将屏幕横向划分为12块,通过栅格子组件GridCol的span属性来决定占据多少块(注意:GridRow子组件只能是GridCol),根据以下实例图可以看到,在小型设备上,专辑封面所在的GridCol和音乐列表所在的GridCol都占据了12块,因此在手机这种小型设备上(sm),音乐专辑封面和音乐列表两个组件的宽度一致,而在平板这种大型设备上(lg),专辑封面所在的GridCol占了4块,音乐列表所在的GridCol占了12块,因此在平板上呈现出1:2的效果