当前位置: 首页 > news >正文

HarmonyOS项目开发一多简介

目录

一、布局能力概述

二、自适应布局

三、响应式布局

四、典型布局场景


一、布局能力概述

  1. 布局决定页面元素排布及显示:在页面设计及开发中,布局能力至关重要,主要通过组件结构来确定使用何种布局。

  2. 自适应布局与响应式布局

    • 自适应布局:当外部容器大小变化时,元素根据相对关系自动变化以适应容器变化,有七种自适应布局能力,常与特定容器类组件搭配使用,多用于解决页面各区域内的布局差异。

    • 响应式布局:当外部容器大小变化时,元素根据断点、栅格或特定特征自动变化以适应容器变化,有三种响应式布局能力,常与特定组件搭配使用,多用于解决页面各区域间的布局差异。

二、自适应布局

  1. 七种自适应布局能力

    • 自适应拉伸:通过 Flex 布局的 flexGrow 和 flexShrink 属性实现,将多余或不足的空间分配给特定区域。

    • 均分能力:通过将 Row、Column 或 Flex 组件的 justifyContent 属性设置为 FlexAlign.SpaceEvenly,实现空间均匀分配给容器内所有空白区域。

    • 自适应缩放:有两种实现方式,一是将子组件的宽高设置为父组件宽高的百分比,二是通过 layoutWeight 属性配置互为兄弟关系的组件在父容器主轴方向的布局权重,但该属性存在使用限制。

    • 缩放能力:通过使用百分比布局配合固定宽高比(aspectRatio 属性)实现,当容器尺寸变化时,内容自适应调整且宽高比不变。

    • 自适应延伸:有两种实现方式,通过 List 组件或 Scroll 组件配合 Row/Column 组件实现,根据显示区域尺寸显示不同数量的元素。

    • 隐藏能力:通过设置布局优先级(displayPriority 属性)控制显隐,当布局主轴方向剩余尺寸不足以满足全部元素时,按照优先级从小到大依次隐藏。

    • 自适应折行:通过将 Flex 组件的 wrap 属性设置为 FlexWrap.Wrap 实现,当布局方向尺寸不足以显示完整内容时自动换行。

三、响应式布局

  1. 简介:当窗口尺寸变化较大时,仅靠自适应布局可能出现问题,此时需要响应式布局调整页面结构。响应式布局根据特定特征(如窗口宽度)自动变化以适应外部容器变化,主要通过断点、媒体查询和栅格布局实现。

  2. 断点

    • 定义:将窗口宽度划分为不同范围(断点),在不同断点下可实现不同的页面布局效果。

    • 监听方法:通过获取窗口对象并监听窗口尺寸变化、通过媒体查询监听应用窗口尺寸变化、借助栅格组件能力监听不同断点的变化等方法来判断当前所处断点。

  3. 媒体查询:可以监听应用显示区域变化、横竖屏、深浅色、设备类型等多种媒体特征,与断点结合可监听断点变化。

  4. 栅格布局

    • 简介:栅格是多设备场景下的辅助定位工具,通过将空间分割为有规律的栅格,降低适配成本,保证多设备上应用显示的协调性和一致性。

    • 栅格组件的断点:提供丰富的断点定制能力,可修改断点取值范围,支持以窗口宽度或栅格组件本身宽度为参照物响应断点变化,且断点发生变化时会通过 onBreakPointChange 事件通知开发者。

    • 栅格组件的 columns、gutter 和 margin:columns 默认为 12 列,gutter 默认为 0,可定义不同断点下的 columns 数量、gutter 长度以及水平和垂直方向的 gutter。margin 和 padding 可控制栅格组件与父容器左右边缘的距离,但二者计算区域不同。

    • 栅格组件的 span、offset 和 order:GridCol 组件支持配置这三个参数,取值具有向后方向的继承性,可控制元素在栅格中的布局。

    • 栅格组件的嵌套使用:满足复杂场景的需要。

四、典型布局场景

  1. 页签栏:结合响应式布局,设置不同断点下 Tab 组件的属性和 tabBar 的 CustomBuilder 布局方向,实现页签在不同位置和尺寸的效果。

  2. 运营横幅(Banner):使用 Swiper 组件结合响应式布局,配置不同断点下的 displayCount 属性,实现不同数量内容项的展示。

  3. 网格:通过 Grid 组件调整 columnsTemplate 属性或 List 组件调整 lanes 属性,结合响应式布局实现不同断点下图片的不同排布。

  4. 侧边栏:使用 SideBarContainer 组件结合响应式布局,配置不同断点下的属性,实现侧边栏的不同显示效果。

  5. 单 / 双栏:使用 Navigation 组件实现单 / 双栏场景,可根据窗口宽度自动切换显示。

  6. 三分栏:组合使用 SideBarContainer 组件与 Navigation 组件,结合响应式布局,设置不同断点下的属性,实现不同窗口宽度下的不同栏显示效果。

  7. 自定义弹窗:通过 CustomDialogController 实现,有两种方式,一是通过 gridCount 属性配置弹窗宽度,二是将 customStyle 设置为 true 自定义弹窗样式配合栅格组件实现。

  8. 大图浏览:将 Image 组件的 objectFit 属性设置为 ImageFit.Contain,解决图片被截断问题。

  9. 操作入口:使用 Scroll 和 Row 组件结合,实现不同断点下的操作入口布局效果。

  10. 顶部:使用栅格行组件 GridRow 和栅格列组件 GridCol 布局,实现不同断点下标题和搜索框的显示效果。

  11. 缩进布局:借助栅格组件控制内容在不同断点下占据不同列数,实现缩进效果。

  12. 挪移布局:通过配置栅格子元素在不同断点下占据的列数,实现 “上下布局” 与 “左右布局” 的切换效果。

  13. 重复布局:配置栅格子组件在不同断点下占据不同列数,实现 “小屏单列显示、大屏双列显示” 的效果,还可通过 onBreakpointChange 事件调整显示的元素数量。

相关文章:

HarmonyOS项目开发一多简介

目录 一、布局能力概述 二、自适应布局 三、响应式布局 四、典型布局场景 一、布局能力概述 布局决定页面元素排布及显示:在页面设计及开发中,布局能力至关重要,主要通过组件结构来确定使用何种布局。 自适应布局与响应式布局&#xff1…...

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 实现分页查询。 这里&#xff0c…...

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公司开发&#xff0c;是一个用于构建Web和原生交互界面的库 1.1 React优势 相较于传统基于DOM开发的优势 1.组件化的开发方式 2.不错的性能 相较于其他前端框架的优势 1.丰富的生态 2.跨平台支持 1.2React的时长情况 全球最流行&#xff0c;大厂…...

《Kadane‘s Algorithm专题:最大和连续子数组》

&#x1f680; 博主介绍&#xff1a;大家好&#xff0c;我是无休居士&#xff01;一枚任职于一线Top3互联网大厂的Java开发工程师&#xff01; &#x1f680; &#x1f31f; 在这里&#xff0c;你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人&#xff0c;我不仅热衷…...

Vue基础(5)

ref属性 在 Vue2 中&#xff0c;ref是一个特殊的属性&#xff0c;用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref&#xff0c;我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。 示例: <template><div><input ref"inputField&quo…...

面对复杂的软件需求:5大关键策略!

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

使用Git进行版本控制的最佳实践

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

【入门1】顺序结构 - B2025 输出字符菱形

题目描述 用 * 构造一个对角线长 55 个字符&#xff0c;倾斜放置的菱形。 输入格式 没有输入要求。 输出格式 如样例所示。用 * 构成的菱形。 输入输出样例 输入 #1 输出 #1**** ********* <C> : #include<stdio.h>int main() {printf(" *\n ***\n**…...

C#DLL热加载|动态替换

我有一个项目 开始取数据和结束数据部分是一样的&#xff0c;但中间处理数据是根据客户需求来转换的 又要求增加一个客户数据转换 主程序是不能停下来的 所以这个项目转数据转换部分做成插件式 每个客户的数据转换都是一个项目 都是一个DLL 主程序里面定义好接口类或者抽象…...

数据库三大范式

目录 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) Oracle三大范式是数据库设计中的规范化过程,旨在减少数据冗余、提高数据一致性和数据库性能。这三大范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 第一范式(1NF) 数据库表的每一列都是不可分割…...

【linux】fdisk磁盘分区管理

介绍 fdisk是一个磁盘分区管理工具&#xff0c;可以用来创建、删除、修改和查看磁盘分区。 fdisk一般都是交互式使用&#xff0c;基础语法: fdisk /dev/sdd。进入交互窗口后&#xff0c;有一些选项&#xff0c;需要了解下&#xff1a; 选项含义n创建新分区p查看磁盘的分区情…...

asp.net core 入口 验证token,但有的接口要跳过验证

asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中&#xff0c;你可以使用中间件来验证token&#xff0c;并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子&#xff1a; 创建一个自定义属性来标记是否跳过验证&#xff1a; public clas…...

[mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑

#GROUP BY的使用 还是先从需求出发,我们现在想求员工表里各个部门的平均工资,最高工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id 我们就会知道它会把一样的id分组,没有部门的就会分为一组,我们也可以用其他字段来分组,我们想查询不同jb_id…...

从数据中台到数据飞轮:实现数据驱动的升级之路

从数据中台到数据飞轮&#xff1a;实现数据驱动的升级之路 随着数字化转型的推进&#xff0c;数据已经成为企业最重要的资产之一&#xff0c;企业普遍搭建了数据中台&#xff0c;用于整合、管理和共享数据&#xff1b;然而&#xff0c;近年来&#xff0c;数据中台的风潮逐渐减退…...

小记:SpringBoot中,@Alisa和@ApiModelProperty的区别

在 Spring Boot 中&#xff0c;Alias和ApiModelProperty 这两个注解用于不同的目的。 Alias Alias是一个用于定义别名的注解&#xff0c;通常用于 Bean 属性的别名功能&#xff0c;这样在使用某些框架&#xff08;如 JPA 或 Jackson&#xff09;时&#xff0c;可以将一个属性名…...

信捷 PLC C语言 定时器在FC中的使用

传统梯形图的定时器程序写起来简单&#xff0c;本文用C语言写定时器的使用。 定时器在c语言中使用&#xff0c;和普通梯形图中使用的区别之一是既有外部条件&#xff0c;也有内部条件。 1.建全局变量 2.建立FC POU 这个是功能POU程序。 这里的Enable是内部条件 3.调用包含定…...

k8s常用对象简介

Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是一组&#xff08;一个或多个&#xff09; 容器&#xff1b; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置&#xff08;colocated&#xff09;的并且一同调度&…...

做pc端网站咨询/网站制作流程和方法

1.综述 QDnsLookup类表示一个DNS查找。 QDnsLookup使用操作系统提供的机制来执行DNS查找。要执行查找&#xff0c;您需要指定名称和类型&#xff0c;然后调用lookup()槽。finished()信号将在完成时发出。例如&#xff0c;你可以决定一个XMPP聊天客户端应该连接到哪个服务器为…...

wordpress固定连接nginx/希爱力跟万艾可哪个猛

本文转自博客园 原文地址为&#xff1a;http://www.cnblogs.com/hhdllhflower/archive/2012/10/04/2711675.html我对原文做了一点改动&#xff1a;我将lfFaceName[LF_FACESIZE]称作“字体的字样名称”LOGFONT是Windows内部字体的逻辑结构&#xff0c;主要用于设置字体格式&am…...

淘宝联盟返利网站怎么做/天津抖音seo

如何在visio中插入公式&#xff1f; 最方便的方法是安装mathtype公式编辑器&#xff0c;在里面输入完公式之后复制&#xff0c;在visio空白处点击右键&#xff0c;选择“选择性粘贴”&#xff0c;然后会出现mathtype 6.0 Equation&#xff0c;单击确定就把mathtype中的公式顺利…...

个人免费建网站/百度秒收录蜘蛛池

使用Action、Func和Lambda表达式 在.NET在,我们经常使用委托,委托的作用不必多说&#xff0c;在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型&#xff0c;再使用这个自定义的委托类型定义一个委托字段或变量。.NET 2.0给我们带来了Action、Func两个泛型委托&#xff…...

网站宣传与推广的指导思想/免费二级域名分发平台

题目链接https://code.mi.com/problem/list/view?id3 描述 两个长度超出常规整形变量上限的大数相减&#xff0c;请避免使用各语言内置大数处理库&#xff0c;如 Java.math.BigInteger 等。 输入 有 N 行测试数据&#xff0c;每一行有两个代表整数的字符串 a 和 b&#xf…...

大型网站开发实战/网络营销手段

刚从微博上看到&#xff0c;大家来围观一下吧~ -------------------------------------------------------------------------------------------------------------------- 我怀着复杂的心情来发这个贴&#xff0c;告诉大家一个你根本就不知道的敦煌&#xff01;王树彤总裁&am…...