鸿蒙开发从入门到入土:3-ArUI开发之布局

509 阅读3分钟

0 ArkTS开发语言

在介绍ArkUI开发之前,先说两句ArkTS语言。

ArkTS是一种为构建高性能应用而设计的编程语言。ArkTS在继承TypeScript语法的基础上进行了优化,以提供更高的性能和开发效率。

具体的ArkTS开发语言的语法,可以看下面这篇官方的文档,笔者就不再赘述了。

ArkTS语言介绍

1 布局概述

组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发者可以根据自己的需求,选择合适的布局进行页面开发。

布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。在实际的开发过程中,需要遵守以下流程保证整体的布局效果:

  • 确定页面的布局结构。
  • 分析页面中的元素构成。
  • 选用适合的布局容器组件或属性控制页面中各个元素的位置和大小。

常见的页面结构如下图所示:

image.png

这里面page就是当前页面的根节点,ColumnRow是系统提供的布局组件,也是最常用的布局组件。

2 布局元素的组成

布局相关的容器组件可形成对应的布局效果,具体的布局元素的组成见下图

image.png

相信上面这个图对于做Android、iOS开发的程序员来说,不是很陌生,各个元素的含义如下:

  • 组件区域(蓝区方块):组件区域表示组件的大小,widthheight属性用于设置组件区域的大小。
  • 组件内容区(黄色方块):组件内容区大小为组件区域大小减去组件的border值,组件内容区大小会作为组件内容(或者子组件)进行大小测算时的布局测算限制。
  • 组件内容(绿色方块):组件内容本身占用的大小,比如文本内容占用的大小。组件内容和组件内容区不一定匹配,比如设置了固定的width和height,此时组件内容的大小就是设置的width和height减去padding和border值,但文本内容则是通过文本布局引擎测算后得到的大小,可能出现文本真实大小小于设置的组件内容区大小。当组件内容和组件内容区大小不一致时,align属性生效,定义组件内容在组件内容区的对齐方式,如居中对齐。
  • 组件布局边界(虚线部分):组件通过margin属性设置外边距时,组件布局边界就是组件区域加上margin的大小。

3 如何选择布局

HarmonyOS Next里,布局主要分为:

  1. 线性布局:对应的ArkUI组件是 RowColumn,相当于Android 中的 LinearLayout,Row就是横向的LinearLayout,Column就是竖向的LinearLayout
  2. 层叠布局:对应的ArkUI组件是Stack,相当于Android中的FrameLayout
  3. 弹性布局:对应的ArkUI组件是Flex
  4. 相对布局:ArkUI组件是RelativeContainer,相当于Android中的RelativeLayout
  5. 栅格布局:ArkUI组件是GridRowGridCol
  6. 选项卡:ArkUI组件是Tabs,相当于Android中的TabLayout

当然官方文档中还有一些其他布局,但是笔者总是觉得这些称不上布局,更像是组件,比如:List、Grid、Swiper这三个组件

尾声

说了这么多,距离 show me the code 就差一步了,下一篇咱们从最最常用的布局组件 ColumnRow来入手

本文正在参加华为鸿蒙有奖征文征文活动

参考资料

  1. 布局概述