HarmonyOS项目开发一多简介
目录
一、布局能力概述
二、自适应布局
三、响应式布局
四、典型布局场景
一、布局能力概述
-
布局决定页面元素排布及显示:在页面设计及开发中,布局能力至关重要,主要通过组件结构来确定使用何种布局。
-
自适应布局与响应式布局:
-
自适应布局:当外部容器大小变化时,元素根据相对关系自动变化以适应容器变化,有七种自适应布局能力,常与特定容器类组件搭配使用,多用于解决页面各区域内的布局差异。
-
响应式布局:当外部容器大小变化时,元素根据断点、栅格或特定特征自动变化以适应容器变化,有三种响应式布局能力,常与特定组件搭配使用,多用于解决页面各区域间的布局差异。
-
二、自适应布局
-
七种自适应布局能力:
-
自适应拉伸:通过 Flex 布局的 flexGrow 和 flexShrink 属性实现,将多余或不足的空间分配给特定区域。
-
均分能力:通过将 Row、Column 或 Flex 组件的 justifyContent 属性设置为 FlexAlign.SpaceEvenly,实现空间均匀分配给容器内所有空白区域。
-
自适应缩放:有两种实现方式,一是将子组件的宽高设置为父组件宽高的百分比,二是通过 layoutWeight 属性配置互为兄弟关系的组件在父容器主轴方向的布局权重,但该属性存在使用限制。
-
缩放能力:通过使用百分比布局配合固定宽高比(aspectRatio 属性)实现,当容器尺寸变化时,内容自适应调整且宽高比不变。
-
自适应延伸:有两种实现方式,通过 List 组件或 Scroll 组件配合 Row/Column 组件实现,根据显示区域尺寸显示不同数量的元素。
-
隐藏能力:通过设置布局优先级(displayPriority 属性)控制显隐,当布局主轴方向剩余尺寸不足以满足全部元素时,按照优先级从小到大依次隐藏。
-
自适应折行:通过将 Flex 组件的 wrap 属性设置为 FlexWrap.Wrap 实现,当布局方向尺寸不足以显示完整内容时自动换行。
-
三、响应式布局
-
简介:当窗口尺寸变化较大时,仅靠自适应布局可能出现问题,此时需要响应式布局调整页面结构。响应式布局根据特定特征(如窗口宽度)自动变化以适应外部容器变化,主要通过断点、媒体查询和栅格布局实现。
-
断点:
-
定义:将窗口宽度划分为不同范围(断点),在不同断点下可实现不同的页面布局效果。
-
监听方法:通过获取窗口对象并监听窗口尺寸变化、通过媒体查询监听应用窗口尺寸变化、借助栅格组件能力监听不同断点的变化等方法来判断当前所处断点。
-
-
媒体查询:可以监听应用显示区域变化、横竖屏、深浅色、设备类型等多种媒体特征,与断点结合可监听断点变化。
-
栅格布局:
-
简介:栅格是多设备场景下的辅助定位工具,通过将空间分割为有规律的栅格,降低适配成本,保证多设备上应用显示的协调性和一致性。
-
栅格组件的断点:提供丰富的断点定制能力,可修改断点取值范围,支持以窗口宽度或栅格组件本身宽度为参照物响应断点变化,且断点发生变化时会通过 onBreakPointChange 事件通知开发者。
-
栅格组件的 columns、gutter 和 margin:columns 默认为 12 列,gutter 默认为 0,可定义不同断点下的 columns 数量、gutter 长度以及水平和垂直方向的 gutter。margin 和 padding 可控制栅格组件与父容器左右边缘的距离,但二者计算区域不同。
-
栅格组件的 span、offset 和 order:GridCol 组件支持配置这三个参数,取值具有向后方向的继承性,可控制元素在栅格中的布局。
-
栅格组件的嵌套使用:满足复杂场景的需要。
-
四、典型布局场景
-
页签栏:结合响应式布局,设置不同断点下 Tab 组件的属性和 tabBar 的 CustomBuilder 布局方向,实现页签在不同位置和尺寸的效果。
-
运营横幅(Banner):使用 Swiper 组件结合响应式布局,配置不同断点下的 displayCount 属性,实现不同数量内容项的展示。
-
网格:通过 Grid 组件调整 columnsTemplate 属性或 List 组件调整 lanes 属性,结合响应式布局实现不同断点下图片的不同排布。
-
侧边栏:使用 SideBarContainer 组件结合响应式布局,配置不同断点下的属性,实现侧边栏的不同显示效果。
-
单 / 双栏:使用 Navigation 组件实现单 / 双栏场景,可根据窗口宽度自动切换显示。
-
三分栏:组合使用 SideBarContainer 组件与 Navigation 组件,结合响应式布局,设置不同断点下的属性,实现不同窗口宽度下的不同栏显示效果。
-
自定义弹窗:通过 CustomDialogController 实现,有两种方式,一是通过 gridCount 属性配置弹窗宽度,二是将 customStyle 设置为 true 自定义弹窗样式配合栅格组件实现。
-
大图浏览:将 Image 组件的 objectFit 属性设置为 ImageFit.Contain,解决图片被截断问题。
-
操作入口:使用 Scroll 和 Row 组件结合,实现不同断点下的操作入口布局效果。
-
顶部:使用栅格行组件 GridRow 和栅格列组件 GridCol 布局,实现不同断点下标题和搜索框的显示效果。
-
缩进布局:借助栅格组件控制内容在不同断点下占据不同列数,实现缩进效果。
-
挪移布局:通过配置栅格子元素在不同断点下占据的列数,实现 “上下布局” 与 “左右布局” 的切换效果。
-
重复布局:配置栅格子组件在不同断点下占据不同列数,实现 “小屏单列显示、大屏双列显示” 的效果,还可通过 onBreakpointChange 事件调整显示的元素数量。
相关文章:
HarmonyOS项目开发一多简介
目录 一、布局能力概述 二、自适应布局 三、响应式布局 四、典型布局场景 一、布局能力概述 布局决定页面元素排布及显示:在页面设计及开发中,布局能力至关重要,主要通过组件结构来确定使用何种布局。 自适应布局与响应式布局࿱…...

C++基础三
构造函数 构造函数(初始化类成员变量): 1、属于类的成员函数之一 2、构造函数没有返回类型 3、构造函数的函数名必须与类名相同 4、构造函数不允许手动调用(不能通过类对象调用) 5、构造函数在类对象创建时会被自动调用 6、如果没有显示声…...

利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析
利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析 引言 在2024年MathorCup大数据挑战赛中,赛道A聚焦于气象数据分析,特别是台风的生成、路径预测、和降水风速特性等内容。本次比赛的任务主要是建立一个分类评价模型&…...

Linux系统操作篇 one -文件指令及文件知识铺垫
Linux操作系统入门-系统篇 前言 Linux操作系统与Windows和MacOS这些系统不同,Linux是黑屏的操作系统,操作方式使用的是指令和代码行来进行,因此相对于Windows和MacOS这些带有图形化界面的系统,Linux的入门门槛和上手程度要更高&…...
隨筆20241028 ISR 的收缩与扩展及其机制解析
在 Kafka 中,ISR(In-Sync Replicas) 是一组副本,它们与 Leader 保持同步,确保数据一致性。然而,ISR 的大小会因多种因素而变化,包括收缩和扩展。以下是 ISR 收缩与扩展的详细解释及其背后的机制…...
linux-字符串相关命令
1、cut 提取文件每一行中的内容 下面是一些常用的 cut 命令选项的说明: -c, --characters列表:提取指定字符位置的数据。-d, --delimiter分界符:指定字段的分隔符,默认为制表符。-f, --fieldsLIST:提取指定字段的数据…...

ES6 函数的扩展
ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面 参数变量是默认声明的,所以不能用 let 或 const 再次声明 使用参数默认值时,函数不能有同名参…...
Mac 查看占用特定端口、终止占用端口的进程
在 macOS 上,可以使用以下命令来查看占用特定端口(例如 8080)的进程: lsof -i :8080命令说明 lsof:列出打开的文件和网络连接信息。-i :8080:筛选出正在监听 8080 端口的进程。 输出结果结构 执行上述命…...

C#入坑JAVA MyBatis入门 CURD 批量 联表分页查询
本文,分享 MyBatis 各种常用操作,不限于链表查询、分页查询等等。 1. 分页查询 在 下文的 的「3.4 selectPage」小节,我们使用 MyBatis Plus 实现了分页查询。除了这种方式,我们也可以使用 XML 实现分页查询。 这里,…...

RabbitMQ 安装(Windows版本)和使用
安装 安装包获取 可以自己找资源,我这里也有百度云的资源,如果没失效的话可以直接用。 通过百度网盘分享的文件:RabbitMQ 链接:https://pan.baidu.com/s/1rzcdeTIYQ4BqzHLDSwCgyw?pwdfj79 提取码:fj79 安装教程…...
Apache paimon表管理
表管理 2.9.4.1 管理快照 1)快照过期 Paimon Writer每次提交都会生成一个或两个快照。每个快照可能会添加一些新的数据文件或将一些旧的数据文件标记为已删除。然而,标记的数据文件并没有真正被删除,因为Paimon还支持时间旅行到更早的快照。它们仅在快照过期时被删除。 …...
java 第19天
一.Lambda表达式 前提是:参数是函数式接口才可以书写Lambda表达式 函数式接口条件: 1.接口 2.只有一个抽象方法 lambda表达式又称为匿名函数,允许匿名函数以参数的形式传入方法,简化代码 lambda表达式分为两部分()->{} …...
什么是服务器?服务器与客户端的关系?本地方访问不了网址与服务器访问不了是什么意思?有何区别
服务器是一种高性能的计算机,它通过网络为其他计算机(称为客户端)提供服务。这些服务可以包括文件存储、打印服务、数据库服务或运行应用程序等。服务器通常具有强大的处理器、大量的内存和大容量的存储空间,以便能够处理多个客户…...

Spring(1)—Spring 框架:Java 开发者的春天
一、关于Spring 1.1 简介 Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。它提供了全面的基础设施支持,使开发者…...

MT1401-MT1410 码题集 (c 语言详解)
目录 MT1401归并排序 MT1402堆排序 MT1403后3位排序 MT1404小大大小排序 MT1405小大大小排序II MT1406数字重排 MT1407插入 MT1408插入 MT1409旋转数组 MT1410逆时针旋转数组 MT1401归并排序 c 语言实现代码 #include <stdio.h>// merge two subarrays void merge(int a…...

React基础语法
1.React介绍 React由Meta公司开发,是一个用于构建Web和原生交互界面的库 1.1 React优势 相较于传统基于DOM开发的优势 1.组件化的开发方式 2.不错的性能 相较于其他前端框架的优势 1.丰富的生态 2.跨平台支持 1.2React的时长情况 全球最流行,大厂…...

《Kadane‘s Algorithm专题:最大和连续子数组》
🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…...
Vue基础(5)
ref属性 在 Vue2 中,ref是一个特殊的属性,用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref,我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。 示例: <template><div><input ref"inputField&quo…...

面对复杂的软件需求:5大关键策略!
面对软件需求来源和场景的复杂性,有效地管理和处理需求资料是确保项目成功的关键,能够提高需求理解的准确性,增强团队协作和沟通,降低项目风险,提高开发效率。反之,项目可能面临需求理解不准确、团队沟通不…...

使用Git进行版本控制的最佳实践
文章目录 Git简介基本概念仓库(Repository)提交(Commit)分支(Branching) 常用命令初始化仓库添加文件提交修改查看状态克隆仓库分支操作合并分支推送更改 最佳实践使用有意义的提交信息定期推送至远程仓库使…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...

高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
Electron简介(附电子书学习资料)
一、什么是Electron? Electron 是一个由 GitHub 开发的 开源框架,允许开发者使用 Web技术(HTML、CSS、JavaScript) 构建跨平台的桌面应用程序(Windows、macOS、Linux)。它将 Chromium浏览器内核 和 Node.j…...

C++性能优化指南
思维导图(转载) https://www.processon.com/view/5e5b3fc5e4b03627650b1f42 第 1 章 优化概述 1.1 优化是软件开发的一部分 优化更像是一门实验科学。 1.2 优化是高效的 1.3 优化是没有问题的 **90/10 规则:**程序中只有 10% 的代码…...