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

鸿蒙UI开发与部分布局

UI开发

1. 布局概述

1.1 开发流程

1.先确定开发流程 -> 2.分析页面元素构成 ->3.选用合适的布局容器组件

image-20241121081642623

1.3 布局元素组成:盒模型

image-20241121082444491

image-20241121083235114

2.1 布局分类

2.1 线性布局

线性布局是开发中最常用·、最基础的布局,通过线性容器Row和Column构建

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.1.1 线性布局子元素排列方向:主轴

image-20241121090407452

布局子元素在排列方向上的间距

在布局容器内,可以通过space属性设置排列方向上子元素的间距

线性布局容器在布局方向的轴线,子元素默认沿主轴排列

.justifyContent(FlexAlign.End)//主轴对齐
.alignItems(HorizontalAlign.Center)//交叉轴对齐  

2.1.2 设置主轴对齐方式

 .justifyContent(FlexAlign.End)//主轴对齐.alignItems(HorizontalAlign.Center)//交叉轴对齐  

image-20241121090911564

不管容器是Coloum还是Row,它们默认的排列方式都是主轴为始端,交叉轴为居中对齐

  1. 设置主轴对齐的方式:JustifyContent(FlexAlign.Center)
  2. 设置交叉轴的对齐方式:alignItems()

自适应拉伸:Blank组件

线性布局下,常用空白填充组件Blank,在容器主轴方向自动填充空白空间,达到自适应的拉伸效果

打个比方,就是你竖屏在看小说,然后你横屏了,小说的内容会跟着横屏的屏幕去调整

image-20241121093045568

2.2 层叠布局

层叠布局用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局

  • 层叠布局通过Stack容器组件实现位置的固定定位与层叠
  • 容器中的子元素(子组件)一次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可设置元素

image-20241121093711961

2.1.1 层叠布局的对齐方式

Stack组件通过alignContent参数实现位置的相对移动

image-20241121095941931

在层叠布局中,如果后面子元素尺寸大于前面子元素的尺寸,则前面子元素完全隐藏

2.1.2 层叠布局的层级控制:Z控制

如何显示前面的元素呢?

  • Stack容器中兄弟组件显示层级关系可以通过Z序控制ZIndex属性改变
  • zIndex值越大,显示的层级越高,即zIndex值大的组件会覆盖在zIndex值小的组件上方

2.1.3 层叠布局的应用场景

使用层叠布局快速搭建手机页面显示模型

image-20241121134023838

2.3 弹性布局

2.3.1 弹性布局的概念

弹性布局提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间

  • 容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉尺寸
  • 弹性布局常用在以下场景:如页面头部均匀分布的导航栏、页面框架的搭建、多行数据的排列image-20241121134936895

2.3.2 弹性布局的元素排列方向:direction

弹性布局中,容器的子元素可以按照任意方向排列,通过设置参数direction,可以决定主轴的反向,从而控制子组件的排列方向

image-20241121101155517

2.3.3 案例解析

通过参数FlexDirection.Row和FlexDirection.RowReverse来控制容器主轴为水平方向

image-20241121135300259

通过参数FlexDirection.Column和FlexDirection.ColumnReverse来控制容器主轴为垂直方向

image-20241121135442101

2.4 相对布局

2.4.1 概念

布局容器内子元素支持指定锚点,可以为兄弟元素或者父元素,基于锚点做相应位置布局

  • RelativeContainer为采用相对布局的容器。支持容器内部的子元素设置相对未知关系

image-20241121123948980

2.4.2 相对布局的依赖关系: 锚点设置

锚点设置是指设置子元素相对于父元素或兄弟元素的位置依赖关系

  • 水平方向上,可以设置left、middle、right的锚点
  • 在竖值方向上,可以设置top、center、bottom的锚点
  • 为了明确定义锚点,必须为RelativeContainer及其子元素设置ID,用于指定锚点信息
  • RelativeConrainer的ID默认为“container”,其余子元素的ID通过这只id属性。未设置ID的子元素在RelativeContainer中不会显示
  • 在使用锚点时要注意子元素的相对位置关系,避免出现错位或者遮挡的情况

2.4.3 相对布局的依赖关系:以容器为锚点

RelativeContainer父组件为锚点,__container__代表父容器的id

2.4.4 相对布局的依赖关系:以子元素为锚点

只要在RelativeContainer容器内,均可以通过alignRules进行相应的位置移动

代码案例

@Entry
@Component
struct RelativeContainer1{build() {RelativeContainer() {//父容器组件Text("1111").width(80).height(80).backgroundColor(Color.Gray).alignRules({top:{anchor:"__container__",align:VerticalAlign.Top},left:{anchor:'__container__',align:HorizontalAlign.Start}}).id('Text')Text("2222").width(80).height(80).backgroundColor(Color.Pink).alignRules({top:{anchor:"Text",align:VerticalAlign.Bottom},left:{anchor:"Text",align:HorizontalAlign.End}}).id("Text1")}}
}

image-20241121132722692

相关文章:

鸿蒙UI开发与部分布局

UI开发 1. 布局概述 1.1 开发流程 1.先确定开发流程 -> 2.分析页面元素构成 ->3.选用合适的布局容器组件 1.3 布局元素组成:盒模型 2.1 布局分类 2.1 线性布局 线性布局是开发中最常用、最基础的布局,通过线性容器Row和Column构建 2.1.1 线性布…...

redis的map底层数据结构 分别什么时候使用哈希表(Hash Table)和压缩列表(ZipList)

在Redis中,Hash数据类型的底层数据结构可以是压缩列表(ZipList)或者哈希表(HashTable)。这两种结构的使用取决于特定的条件: 1. **使用ZipList的条件**: - 当Hash中的数据项(即f…...

css水平居中+垂直居中

display:“flex”,position: “absolute”,top:“50%”,left:“50%”,transform: ‘translate(-50%, -50%)’...

设计模式之 组合模式

组合模式(Composite Pattern)是一种结构型设计模式,它通过将对象组合成树形结构来表示“部分-整体”层次。组合模式允许客户端统一处理单个对象和对象集合。换句话说,组合模式让客户端可以像处理单个对象一样处理对象的集合&#…...

LCR 001 两数相除

一.题目: . - 力扣(LeetCode) 二.原始解法-超时: class Solution: def divide(self, a: int, b: int) -> int: # 1)分析: # 除法计算,不能使用除法符号,可以理解为实现除法 # 除法…...

数据库、数据仓库、数据湖、数据中台、湖仓一体的概念和区别

数据库、数据仓库、数据湖、数据中台和湖仓一体是数据管理和分析领域的不同概念,各自有不同的特点和应用场景。以下是它们的主要区别: 1. 数据库(Database) 定义:结构化的数据存储系统,用于高效地存储、检…...

vue 的生命周期函数

Vue 生命周期函数(生命周期钩子)是 Vue 实例从创建到销毁过程中,不同阶段所触发的特定函数。理解这些生命周期函数对于开发 Vue 应用至关重要,因为它们让你在不同的生命周期阶段执行代码,比如数据初始化、DOM 渲染完成…...

单片机UART协议相关知识

概念 UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器) 是一种 异步 串行 全双工 通信协议,用于设备一对一进行数据传输,只需要两根线(TX,RX)。 异步&…...

【操作系统不挂科】<CPU调度(13)>选择题(带答案与解析)

前言 大家好吖,欢迎来到 YY 滴 操作系统不挂科 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的操作系统题目,供yy应对期中考试复习。大家可以参考 本章为选择题题库,试…...

OpenCV笔记:图像去噪对比

图像去噪对比 1. 均值滤波(Mean Filtering) 方法:用像素周围的像素平均值替换每个像素值。适用场景:适用于去除随机噪声,如在不强调图像细节的场景中,如果图像细节较多时,可能会导致图像模糊。…...

A-B数对(二分查找)

#include<bits/stdc.h> using namespace std;using ll long long;int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n,c;cin>>n>>c;int nu[200000];for(int i0;i<n;i){cin>>nu[i]; // 输入数组元素}sort(nu,nun);ll cnt0; // 统计满…...

Vue 的各个生命周期

详解 Vue 的各个生命周期 文章目录 详解 Vue 的各个生命周期Vue 组件的生命周期1.1 创建阶段示例&#xff1a; 1.2 挂载阶段示例&#xff1a; 1.3 更新阶段示例&#xff1a; 1.4 销毁阶段示例&#xff1a; 生命周期总结生命周期钩子对比表参考链接 Vue 组件的生命周期 在 Vue …...

实现简易计算器 网格布局 QT环境 纯代码C++实现

问题&#xff1a;通过代码完成一个10以内加减法计算器。不需要自适应&#xff0c;界面固定360*350。 ""按钮90*140&#xff0c;其它按钮90*70。 参考样式 #define DEFULT_BUTTON_STYLE "\ QPushButton{\color:#000000;\border:1px solid #AAAAAA;\border-radi…...

后端开发详细学习框架与路线

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端开发 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 为帮助你合理安排时间&#xff0c;以下是结合上述学习内容的阶段划分与时间分配建议。时间安排灵活&a…...

2.langchain中的prompt模板 (FewShotPromptTemplate)

本教程将介绍如何使用 LangChain 库中的 PromptTemplate 和 FewShotPromptTemplate 来构建和运行提示&#xff08;prompt&#xff09;&#xff0c;并通过示例数据展示其应用。 安装依赖 首先&#xff0c;确保你已经安装了 langchain 和相关依赖&#xff1a; pip install lan…...

FairGuard游戏加固实机演示

此前&#xff0c;FairGuard对市面上部分游戏遭遇破解的案例进行了详细分析&#xff0c;破解者会采用静态分析与动态调试相结合的手段&#xff0c;逆向分析出代码逻辑并对其进行篡改&#xff0c;实现作弊功能&#xff0c;甚至是对游戏资源文件进行篡改&#xff0c;从而制售外挂。…...

Spark使用过程中的 15 个常见问题、详细解决方案

目录 问题 1&#xff1a;Spark 作业超时问题描述解决方案Python 实现 问题 2&#xff1a;内存溢出问题描述解决方案Python 实现 问题 3&#xff1a;Shuffle 性能问题问题描述解决方案Python 实现 问题 4&#xff1a;Spark 作业调度不均问题描述解决方案Python 实现 问题 5&…...

算法【最长递增子序列问题与扩展】

本文讲解最长递增子序列以及最长不下降子序列的最优解&#xff0c;以及一些扩展题目。本文中讲述的是最优解&#xff0c;时间复杂度是O(n*logn)&#xff0c;空间复杂度O(n)&#xff0c;好实现、理解难度不大。这个问题也可以用线段树来求解&#xff0c;时间和空间复杂度和本节讲…...

k8s篇之flannel网络模型详解

在 Kubernetes (K8s) 中,Flannel 是一种常用的网络插件,用于实现容器之间的网络通信。Flannel 提供了一种覆盖网络(Overlay Network)模型,使得容器可以跨多个主机进行通信。 以下是 Flannel 在 Kubernetes 中的详细工作原理和覆盖网络模型的详解: 1.Flannel 简介 Flann…...

windows 和 linux检查操作系统基本信息

windows检查操作系统基本信息 systeminfolinux检查操作系统基本信息 获取系统位数 getconf LONG_BIT查询操作系统release信息 lsb_release -a查询系统信息 cat /etc/issue查询系统名称 uname -a...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...