鸿蒙开发(六)布局概述

news2025/1/18 3:28:22

    迄今为止,我还没有正式提到布局的概念。但其实我之前的demo里面,已经默认使用到了一种布局,那就是线性布局(Row、Column),这也是DevEco创建项目默认页面里面默认采用的布局。那么本篇,带着大家一起学习下鸿蒙开发的布局,该篇仅仅是概述,更多的是说理论,后面会有专门的文章去进行布局开发实战。

目录

一、布局概述

二、线性布局

三、层叠布局

四、弹性布局

五、相对布局


鸿蒙系列上一篇

鸿蒙开发(五)鸿蒙UI开发概览-CSDN博客文章浏览阅读464次,点赞11次,收藏9次。从用户角度来讲,一个软件拥有好看的UI,那是锦上添花的事情。再精确的算法,再厉害的策略,最终都得通过UI展现给用户并且跟用户交互。那么,本篇一起学习下鸿蒙开发UI基础知识,认识下各种基本控件以及使用方式。https://blog.csdn.net/qq_21154101/article/details/135520456?spm=1001.2014.3001.5501

一、布局概述

    UI开发肯定不是控件的简单堆砌,如果没有采用合适的布局,那么app的UI效果会不那么好看,UI开发离不开布局。那么,布局的作用是什么呢?布局就是用来管理页面控件的大小和位置。ArkUI提供了8种布局(有点多):

布局

应用场景

线性布局(LinearLayout)

布局中的控件横向或纵向线性排列时使用此布局。

层叠布局(StackLayout)

布局中的控件需要有堆叠效果时使用此布局。

弹性布局(FlexLayout)

与线性布局类似,弹性布局默认能够使控件压缩或拉伸,在控件需要计算拉伸或压缩比例时优先使用此布局。

相对布局(RelativeLayout)

布局中的控件通过设置属性与布局或布局内其他控件位置对齐。

栅格布局(GridRow、GridCol)

栅格是多设备场景下通用的辅助定位工具,通过将空间分割为有规律的栅格。推荐手机、大屏、平板等不同设备,内容相同但布局不同时使用。

列表(List)

横向或纵向展示可滚动的信息。

网格(Grid)

推荐在需要按照固定比例或者均匀分配空间的布局场景下使用。

轮播(Swiper)

轮播组件通常用于实现广告轮播、图片预览、可滚动应用等。

    但其实这所谓的8种布局,也就前四种更像是布局,第五种栅格布局更像是一种多设备的适配方案。另外的三种则更像控件,没错,其实我想说的就是像是Android的RecyclerView,只是不同的表现形式。实际上,大部分开发场景下,这主流的四种布局足够了:

线性布局(LinearLayout)

层叠布局(StackLayout)

弹性布局(FlexLayout)

相对布局(RelativeLayout)

二、线性布局

    线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。线性布局最大的特点就是,布局中的控件横向(Column)或纵向(Row)线性排列。这个跟Android的线性布局是一样的,如下图所示:

    线性布局适合大部分的开发场景,比如登录/注册页面,列表页面等。其使用方法就是通过Colum()或Row(),如下示例代码:

Column({ space: 5 }) {
      Row() {
        Text('111')
      }
    }.width('100%').height('80%').justifyContent(FlexAlign.Center)

三、层叠布局

    层叠布局(StackLayout)用于层叠的显示组件中的元素,通过Stack容器构建。后面添加的元素会覆盖在前面添加的元素之上,可以通过调整大小实现遮挡或层叠的覆盖效果。这个在Android中也有,叫FrameLayout。如下图所示:

    层叠布局的使用场景主要有广告、卡片层叠效果等。其使用方法是通过Stack(),如下示例代码:

Stack({ }) {
  Column(){}
    .width('90%')
    .height('100%')
    .backgroundColor('#ff58b87c')
  Text('text')
    .width('60%')
    .height('60%')
    .backgroundColor('#ffc3f6aa')
  Button('button')
    .width('30%')
    .height('30%')
    .backgroundColor('#ff8ff3eb')
    .fontColor('#000')
  }.width('100%').height(150).margin({ top: 50 })

四、弹性布局

    弹性布局(FlexLayout)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。弹性布局最大的特点自然就是弹性、灵活。这个跟Android的约束布局,约束布局使用起来也是非常的灵活。如下图所示:

    弹性布局在开发场景中用例特别多,比如页面头部导航栏的均匀分布、页面框架的搭建、多行数据的排列等等。其使用方法是通过Flex,如下示例代码:

Flex({ direction: FlexDirection.Row }) {
  Text('1').width('33%').height(50).backgroundColor(0xF5DEB3)
  Text('2').width('33%').height(50).backgroundColor(0xD2B48C)
  Text('3').width('33%').height(50).backgroundColor(0xF5DEB3)
}
.height(70)
.width('90%')
.padding(10)
.backgroundColor(0xAFEEEE)

五、相对布局

    相对布局,官方叫RelativeContainer,但我更喜欢称呼为RelativeLayout,容器中的控件通过设置属性与容器或容器内其他控件位置对齐。这个跟Android的相对布局也是对齐的,如下图所示:

    相对布局也是非常的灵活,以我之前在Android的开发经验,使用相对布局的开发者非常多,最大的特点其实就是减少了布局层级,使用方法如下: 

RelativeContainer() {
  Row()
    // 添加其他属性
    .alignRules({
      top: { anchor: '__container__', align: VerticalAlign.Top },
      left: { anchor: '__container__', align: HorizontalAlign.Start }
    })
    .id("row1")

  Row()
    ...
    .alignRules({
      top: { anchor: '__container__', align: VerticalAlign.Top },
      right: { anchor: '__container__', align: HorizontalAlign.End }
    })
    .id("row2")
}
...

    以上四种布局就是鸿蒙开发的主要布局,至于其他的,我前面也说了,我觉得更像是解决具体使用场景的方案(例如多设备适配、列表、网格等),而不太像是布局的概念。当然,我这种说法只是个人的观点。后面的文章,我们会主要针对这四种布局,去进行实战开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1442105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch 2.2 中文官方教程(十)

使用整体追踪分析的追踪差异 原文:pytorch.org/tutorials/beginner/hta_trace_diff_tutorial.html 译者:飞龙 协议:CC BY-NC-SA 4.0 作者: Anupam Bhatnagar 有时,用户需要识别由代码更改导致的 PyTorch 操作符和 CUDA 内核的变化…

python 动态数据 展示 ,数据是由51单片机发送过来的,温度传感器。

import tkinter as tk import randomimport seriallis[] for i in range(50):lis.append(i1) # 打开串行端口 ser serial.Serial(COM3, 9600) # 9600为波特率,根据实际情况进行调整# 初始化数据 lis [random.randint(15, 35) for _ in range(50)]def update_data…

【深度学习:Bard】我们 AI 之旅的重要下一步

【深度学习:AI 之旅】我们 AI 之旅的重要下一步 Bard简介将 AI 的优势带入我们的日常产品中帮助开发人员利用 AI 进行创新大胆负责 人工智能是我们今天正在研究的最深刻的技术。无论是帮助医生更早地发现疾病,还是使人们能够用自己的语言获取信息&#x…

2024年10 个好用的AI简历工具盘点推荐

在职场竞争激烈的今天,一份出色的简历就像是你的秘密武器,能帮你在众多候选人中脱颖而出,赢得面试宝座。随着 ChatGPT 引领的 AI 浪潮席卷而来,各式各样的 AI 简历工具如雨后春笋般涌现。面对这样的背景,神器集今天为大…

立面效果图为何要用云渲染100?渲染100邀请码1a12

建筑设计是一门艺术,而立面效果图是艺术的展现,它在设计中非常重要。 1、立面效果图的重要性 立面效果图能用来展示建筑物的风格、材质、色彩以及环境等因素,通过它,设计师可以检验项目质量,评估效果是否达到预期&…

【开源】基于JAVA+Vue+SpringBoot的课程案例资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员需求分析2.2 用户需求分析 三、系统设计3.1 业务流程设计3.1.1 管理员业务流程设计3.1.2 用户业务流程设计3.1.3 首页功能模块及业务流程分析3.1.4 案例资源中心功能模块及业务流程分析3.1.5 用户信息中心功能模块…

C语言笔试题之求出二叉树的最大深度(递归解决)

实例要求: 1、给定一个二叉树 root ,返回其最大深度;2、二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数; 案例展示: 实例分析: 1、判断根节点是否为空;2、分别递归处理左…

Python环境下基于指数退化模型和LSTM自编码器的轴承剩余寿命预测

滚动轴承是机械设备中关键的零部件之一,其可靠性直接影响了设备的性能,所以对滚动轴承的剩余使用寿命(RUL)进行预测是十分必要的。目前,如何准确地对滚动轴承剩余使用寿命进行预测,仍是一个具有挑战的课题。对滚动轴承剩余寿命评估…

C语言中的数据类型-强转

强制类型转换 概念:将某种类型的数据转化我们需要的数据类型,注意强制类型转化是临时强转,不会改变本身的数据类型。 强转又分为显式强转和隐式转化 显示强转是按照我们的要求进行转化 格式:(需要转化数据类型)变量名 #inclu…

VUE学习——事件处理

事件分为内联事件和方法事件。 我们可以使用【v-on】&#xff08;简写&#xff1a;&#xff09;来处理。 内联 <button v-on:click"count">按钮</button><button click"count">按钮</button><p>{{ count }}</p>方法

YouTrack 用户登录提示 JIRA 错误

就算输入正确的用户名和密码&#xff0c;我们也得到了下面的错误信息&#xff1a; youtrack Cannot retrieve JIRA user profile details. 解决办法 出现这个问题是因为 YouTrack 在当前的系统重有 JIRA 的导入关联。 需要把这个导入关联取消掉。 找到后台配置的导入关联&a…

图灵日记之java奇妙历险记--抽象类和接口

目录 抽象类概念抽象类语法 接口概念规则使用特性实现多个接口接口的继承接口使用实例Clonable接口和深拷贝抽象类和接口的区别 Object类 抽象类 概念 在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够…

java SpringBoot2.7整合Elasticsearch(ES)7 带条件分页查询与不带条件分页查询演示讲解

上文 java SpringBoot2.7整合Elasticsearch(ES)7 进行文档增删查改 我们带着大家 整合了 Elasticsearch 对索引中的文档做了 各方面操作 然后 我们来说说 分页查询 这里 为了方便大家看 我加了五条数据进去 这里 我们仍然需要带个条件 这里 我们用name Mapper 接口 加一个这…

【开源】SpringBoot框架开发桃花峪滑雪场租赁系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

高职单招怎么搜答案? #经验分享#微信#笔记

当今社会&#xff0c;随着信息技术的迅猛发展&#xff0c;大学生们在学习过程中面临着各种各样的困难和挑战。而在这些挑战中&#xff0c;面对繁重的作业和复杂的题目&#xff0c;大学生搜题软件应运而生 1.题老大 这是一个公众号 亿级数量题库&#xff0c;可截图搜题&#…

戴上HUAWEI WATCH GT 4,解锁龙年新玩法

春节将至&#xff0c;华为WATCH GT 4作为一款颜值和实力并存的手表&#xff0c;能为节日增添了不少趣味和便利。无论你是钟情于龙年表盘或定制属于自己的表盘&#xff0c;还是过年用来抢红包或远程操控手机拍全家福等等&#xff0c;它都能成为你的“玩伴”。接下来&#xff0c;…

ArcGIS学习(四)坐标系-1

ArcGIS学习(四)坐标系 大家平时在处理数据的时候肯定经常遇到坐标系相关的问题。最常见的就是同一个地区的两个数据,导入ArcGIS内却对不上;也肯定听到过坐标系相关的一些词语,比如地理坐标系投影坐标系、投影、WGS1984坐标、CGCS2000坐标系、火星坐标系、百度坐标系等。 …

C#在设备数据采集中的应用

设备数据采集在现代工业生产中扮演着至关重要的角色。随着工业互联网的发展&#xff0c;设备数据采集技术已经成为了智能制造的基础之一。在这篇文章中&#xff0c;我们将探讨C#语言在设备数据采集中的应用。 首先&#xff0c;让我们来了解一下设备数据采集的概念。设备数据采集…

linux 07 存储管理

02. ext4是一种索引文件系统 上面是索引节点inode&#xff0c;存放数据的元数据 下面是存储块block&#xff0c;主要存放有关的信息 03.linux上的inode 查看文件中的inode ll -i 文件名 磁盘中的inode与文件数量 向sdb2中写文件&#xff1a; 结果&#xff1a; df -i 磁…

倒计时59天

(来源&#xff1a;b站左程云up 099&#xff09; 一&#xff1a;求逆元&#xff1a; 1&#xff09;要保证a可以整除b 2)要保证mod的是一个质数 3&#xff09;b和mod互质 题目2&#xff09;3&#xff09;一般都满足&#xff0c;主要是1) 方法&#xff1a;如求1.…