【HarmonyOS学习日志(9)】一次开发,多端部署之界面级一多开发

embedded/2024/11/19 12:08:38/

关于一次开发,多端部署

一次开发多端部署就是指一套代码工程,一次开发上架,多端按需部署(一多),用于支撑开发者快速高效地开发多终端设备上的应用,以节省开发成本。

HarmonyOS系统面向多终端,提供了一次开发多端部署的相关能力,让开发者基于一种设计高效构建多端可运行的应用。

最明显的表现就是实现不同比例屏幕的组件布局情况。

如图所示,同一套组件在不同比例屏幕上所呈现的布局不同。

除去由屏幕不同形成的布局适配问题之外,还有因不同设备系统形成的功能兼容问题。并且还要考虑在代码层面的组织实现。

学习过程中,有如下解决思路

界面级一多开发

布局能力
自适应布局(Adaptive Layout)

元素可以根据相对关系自动变化以适应外部容器变化的布局能力。当前开发框架提炼了七种自适应布局能力,这些布局可以独立使用,也可多种布局叠加使用。

七种自适应布局能力:

  • 拉伸能力:容器组件尺寸发生变化时,增加或减小的空间全部分配给容器组件内指定区域。

  • 实现方式:Flex布局的flexGrow和flexShrink属性。

  • 均分能力:容器组件尺寸发生变化时,增加或减小的空间均匀分配给容器组件内所有空白区域。

  • 实现方式:Row组件,Column组件或Flex组件的justifyContent属性设置为FlexAlign.SpaceEvenly。

  • 占比能力:子组件的宽或高按照预设的比例,随容器组件发生变化。

  • 实现方式:将子组件的宽高比设置为父组件宽高的百分比或者layoutWeight属性。

  • 缩放能力:子组件的宽高按照预设的比例,随容器组件发生变化,且变化过程中子组件的宽高比不变。

  • 实现方式:布局约束的aspectRatio属性。

  • 延伸能力:容器组件内的子组件,按照其在列表中的先后顺序,随容器组件尺寸变化显示或隐藏。

    实现方式:基于容器组件的两种实现方式:

    • 通过List组件实现

    • 通过Scroll组件配合Row组件或Column组件实现

  • 隐藏能力:容器组件内的子组件,按照其预设的显示优先级,随容器组件尺寸变化显示或隐藏。相同显示优先级的子组件同时显示或隐藏。

  • 实现方式:布局约束的displayPriority属性。

  • 拆行能力:容器组件尺寸发生变化时,如果布局方向尺寸不足以显示完整内容,自动换行。

  • 实现方式:Flex组件的wrap属性设置为FlexWrap.Wrap。

响应式布局(Responsive Layout)

元素可以根据特定的特征(如窗口宽度、屏幕方向等)出发变化以适应外部容器变化的布局能力。响应式布局基于断点、媒体查询、栅格等能力实现。

断点和媒体查询

断点:将窗口宽度划分为不同的范围(即断点),监听窗口尺寸变化,当断点改变时同步调整页面布局。注意,断点支持自定义,取值范围可修改扩展,下表是常用的4个断点范围。

媒体查询:媒体查询提供了丰富的媒体特征监听能力,可以监听应用显示区域变化,横竖屏,深浅色,设备类型等等。

栅格布局

根据设备的水平宽度,将不同的屏幕尺寸划分为不同数量的栅格,来实现屏幕的自适应。且栅格和栅格之间可以设置一个间距。

  • 可以调节布局占栅格的数量(设置参数span)、偏移量(设置参数offset),来实现栅格的适配。

  • 可以修改断点的取值范围,支持启用最多6个断点(设置breakpoints的value参数)。

栅格组件应用场景

  • 缩进布局:

    • 通过设置GridCol的span属性分配组件所占栅格列数

    • 通过设置GridCol的offset、GridRow的gutter等属性改变间距,实现最佳效果。

  • 挪移布局:通过设置GridCol的span属性分配组件所占栅格列数。

  • 重复布局:通过设置GridCol的span属性分配组件所占栅格列数。

视觉风格

分层参数

为了保证各组件有相同风格的默认样式,或者为了保证HarmonyOS系统应用有统一的风格。UX定义了一套系统资源,预置在系统中,开发者可以直接使用,称为分层参数。

@Entry
@Component
struck Index {build() {Row() {Column() {Text('分层参数').fontColor($r('sys.color.ohos_id_color_primary')).fontSize($r('sys.float.ohos_id_text_size_headline3'))}}.backgroundColor($r('sys.color.ohos_id_color_background'))}
}

 使用了分层参数后,当系统切换深色模式时,字体和背景也可以自适应。

自定义资源

开发者可以在resource目录中通过限定词目录来定义不同设备状态的资源,资源可以按照"key-value"的形式自定义。应用在运行态选择使用某资源时,系统会根据设备状态优先从相匹配的目录中寻找资源。

交互归一

对于不同类型的智能设备,用户可能有不同的交互方式,如通过触摸屏、鼠标、触控板等。针对不同来自不同输入设备的相同输入,通过交互归一提供给开发者统一的API。交互归一后开发者无需关注当前设备和输入设备类型,只需在交互归一事件接口中做逻辑响应即可。

缩放

以缩放交互为例,通过多指触控的张合来完成缩放动作,在多设备场景下,缩放交互会出现多种不同的操作输入方式,如表所示。在开发接口上,这些缩放操作都统一为PinchGesture的API事件

Image()
.scale({ x: this.scaleValue, y: this.scaleValue, z: 1 })
.gesture(//双指捏合触发该手势事件PinchGesture({ fingers: 2 }).onActionStart((event?: GestureEvent)=>{}).onActionUpdate((event?: GestureEvent)=>{this.scaleValue = this.pinchValue * event.scale}).onActionEnd(()=>{this.pinchValue = this.scaleValue})
)

组件归一响应

当应用部署在不同设备上供用户使用时,需要支持多种I/O设备,界面呈现出相应的状态为用户提供正确的视觉引导。例如触摸时显示按压状态,鼠标特有的悬停状态,键盘走焦状态。


http://www.ppmy.cn/embedded/138762.html

相关文章

node.js 入门级基础应用

文章目录 概要node.js koa 框架应用实例1. 项目初始化与依赖安装2. 数据库连接配置(创建 db.js 文件)3. 创建Koa应用及路由(创建 app.js 文件) MySQL 数据库基础知识 以及 连接应用nodejs 的作用 概要 Node.js基础类型 Number&am…

【快速入门】前端御三家:HTML、CSS和JS

HTML HTML&#xff0c;超文本标记语言&#xff0c;可以理解成骨架&#xff0c;是一个基础的东西。 一.基础结构 如图所示&#xff1a; 二.常见标签 1.标题标签 在页面上定义标题性的内容 <h1>一级标题</h1> <h2>二级标题</h2> <h3>三级标…

泷羽sec学习打卡-云技术基础1-docker

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于云技术基础的那些事儿-Base1 一、云技术基础什么是云架构&#xff1f;什么是云服务&#xff1f;什么…

GSMA eUICC 远程配置架构技术规范笔记 (SGP.02 v3.2)

## GSMA eUICC 远程配置架构技术规范笔记 (SGP.02 v3.2) ### 1. 概述 **目的&#xff1a;** 为难以接触的机器对机器设备中的嵌入式 UICC (eUICC) 提供远程配置和管理的技术解决方案&#xff0c;确保不同运营商、设备和网络基础设施供应商之间的全球互操作性。 **目标受众&…

03-axios常用的请求方法、axios错误处理

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

华为ID机试 -- 分糖果 E100

题目描述 小明从糖果盒中随意抓一把糖果&#xff0c;每次小明会取出一半的糖果分给同学们。 当糖果不能 平均分配只时&#xff0c;小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 小明最少需要多少次(取出、放回和平均分配均记一次)&#xff0c;能将…

ChatGPT:编程的 “蜜糖” 还是 “砒霜”?告别依赖,拥抱自主编程的秘籍在此!

在当今编程界&#xff0c;ChatGPT 就像一颗耀眼却又颇具争议的新星&#xff0c;它对编程有着不可忽视的影响。但这影响就像一把双刃剑&#xff0c;使用不当&#xff0c;就可能让我们在编程之路上“受伤”。 一、过度依赖 ChatGPT 编程&#xff1a;黑暗深渊里的重重危机 1、个…

室内定位论文精华-无人机与机器人在地下与室内环境中的自主导航与定位新技术

天文导航算法在低成本视觉系统中的应用 关键词 天文导航;自主无人机;GNSS拒止环境;稳定成像系统;星图识别;姿态估计;位置估算 研究问题 现代无人驾驶飞行器(UAV)中,很少使用天文学导航技术。传统的天文学导航依赖于稳定的成像系统,这不仅体积大且重量重,难以满足…