-
-
鸿蒙HarmonyOS实战-ArkUI组件(Stack)
-
发表于:
2024-4-3 22:52
2561
-
鸿蒙HarmonyOS实战-ArkUI组件(Stack)
????一、Stack
1.概述
HarmonyOS中的层叠布局Stack是一种可以将多个组件按照一定顺序叠放的布局。Stack布局中的组件可以是任意类型的组件,且每个组件都可以设置在哪个位置叠放。在叠放时,后添加的组件会自动覆盖前面添加的组件。
Stack布局布局中的每个子组件都可以设置偏移量、旋转角度等属性,这样可以实现更加丰富的叠放效果。此外,Stack布局还支持添加动画,通过动画可以实现组件的平移、旋转等动态效果,使页面更加生动有趣。
因为Stack布局支持多种类型的组件,且可以实现丰富的叠放效果,所以在开发中可以广泛应用,如在制作卡片式布局、轮播图等场景中都可以使用Stack布局。
Stack作为容器,容器内的子元素(子组件)的顺序为Item1->Item2->Item3
2.开发布局
Stack布局的核心思想是将多个控件按照一定顺序叠放在一起,比如,一个图像控件在上面,一个文本控件在下面。这种布局方式可以让应用程序在不同的屏幕尺寸和分辨率下,以及不同的设备上呈现出更加统一的效果。同时,Stack布局还支持一些特殊的效果,比如在界面上实现弹出效果、拖拽效果等等。
在HarmonyOS中,开发者可以通过使用ArkUI提供的Stack布局来快速构建具有层叠效果的界面。Stack布局支持多种控件的布局方式,比如文本、图像、按钮等等。开发者可以根据自己的需要选择不同的控件进行布局。通过合理的设计和排布,可以让应用程序在不同的设备上呈现出更加统一、美观的效果。
具有如图:
1 2 3 4 5 6 7 | 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属性不会起作用。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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.宫格案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @Entry
@Component
struct 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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课