写点什么

鸿蒙 HarmonyOS 实战 -ArkUI 组件(Stack)

作者:蜀道山
  • 2024-04-16
    湖南
  • 本文字数:1895 字

    阅读完需:约 6 分钟

鸿蒙HarmonyOS实战-ArkUI组件(Stack)

🚀一、Stack

🔎1.概述

HarmonyOS 中的层叠布局 Stack 是一种可以将多个组件按照一定顺序叠放的布局。Stack 布局中的组件可以是任意类型的组件,且每个组件都可以设置在哪个位置叠放。在叠放时,后添加的组件会自动覆盖前面添加的组件。


Stack 布局布局中的每个子组件都可以设置偏移量、旋转角度等属性,这样可以实现更加丰富的叠放效果。此外,Stack 布局还支持添加动画,通过动画可以实现组件的平移、旋转等动态效果,使页面更加生动有趣。


因为 Stack 布局支持多种类型的组件,且可以实现丰富的叠放效果,所以在开发中可以广泛应用,如在制作卡片式布局、轮播图等场景中都可以使用 Stack 布局。


Stack 作为容器,容器内的子元素(子组件)的顺序为 Item1->Item2->Item3


🔎2.开发布局

Stack 布局的核心思想是将多个控件按照一定顺序叠放在一起,比如,一个图像控件在上面,一个文本控件在下面。这种布局方式可以让应用程序在不同的屏幕尺寸和分辨率下,以及不同的设备上呈现出更加统一的效果。同时,Stack 布局还支持一些特殊的效果,比如在界面上实现弹出效果、拖拽效果等等。


在 HarmonyOS 中,开发者可以通过使用 ArkUI 提供的 Stack 布局来快速构建具有层叠效果的界面。Stack 布局支持多种控件的布局方式,比如文本、图像、按钮等等。开发者可以根据自己的需要选择不同的控件进行布局。通过合理的设计和排布,可以让应用程序在不同的设备上呈现出更加统一、美观的效果。


具有如图:


Column(){  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 })}
复制代码


🔎3.对齐方式

ArkUI 中 Stack 的 alignContent 属性用于定义 Stack 内的所有子元素在交叉轴上的排列方式。该属性仅在 Stack 容器内含有多行子元素时才会生效。


🔎4.Z 序控制

在 HarmonyOS 中,层叠布局(Stack)的 zIndex 属性用于指定子布局的叠放顺序,决定了子布局的显示先后顺序。zIndex 属性值较大的子布局会在 zIndex 属性值较小的子布局的上方显示。例如,zIndex 属性值为 2 的子布局会在 zIndex 属性值为 1 的子布局的上方显示。


如果两个子布局的 zIndex 属性值相同,则它们的显示顺序将按照它们在布局中的位置确定。越靠后的子布局会在越靠前的子布局的上方显示。


值得注意的是,只有在使用层叠布局(Stack)时,zIndex 属性才会起作用。如果使用线性布局或网格布局等其他类型的布局,则 zIndex 属性不会起作用。


Stack({ alignContent: Alignment.BottomStart }) {  Column() {    Text('Stack子元素1').fontSize(20)  }.width(100).height(100).backgroundColor(0xffd306).zIndex(2)
Column() { Text('Stack子元素2').fontSize(20) }.width(150).height(150).backgroundColor(Color.Pink).zIndex(1)
Column() { Text('Stack子元素3').fontSize(20) }.width(200).height(200).backgroundColor(Color.Grey)}.margin({ top: 100 }).width(350).height(350).backgroundColor(0xe0e0e0)
复制代码


🔎5.宫格案例

@Entry@Componentstruct StackSample {  private arr: string[] = ['APP1', 'APP2', 'APP3', 'APP4', 'APP5', 'APP6', 'APP7', 'APP8'];
build() { Stack({ alignContent: Alignment.Bottom }) { Flex({ wrap: FlexWrap.Wrap }) { ForEach(this.arr, (item) => { Text(item) .width(100) .height(100) .fontSize(16) .margin(10) .textAlign(TextAlign.Center) .borderRadius(10) .backgroundColor(0xFFFFFF) }, item => item) }.width('100%').height('100%') Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { Text('联系人').fontSize(16) Text('设置').fontSize(16) Text('短信').fontSize(16) } .width('50%') .height(50) .backgroundColor('#16302e2e') .margin({ bottom: 15 }) .borderRadius(15) }.width('100%').height('100%').backgroundColor('#CFD0CF') }}
复制代码


🚀写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

  • 关注小编,同时可以期待后续文章 ing🚀,不定期分享原创知识。

  • 更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY



用户头像

蜀道山

关注

欢迎关注作者公众号:【 蜀道衫】 2023-12-29 加入

3年Java后端,5年Android应用开发,精通Java高并发、JVM调优、以及Android开发各种技能。现专研学习鸿蒙HarmonyOS Next操作系统

评论

发布
暂无评论
鸿蒙HarmonyOS实战-ArkUI组件(Stack)_鸿蒙_蜀道山_InfoQ写作社区