三、ArkUI界面设计2(基础布局)

HarmonyOS开发(ArkUI简单使用) Componentbuild(){//组件UI描述@Componentbuild(){//使用组件Com({title:'标题'})//UI描述@Componentbuild(){@Component//UI描述build(){ 阅读详情

此节核心:

  • 1. 设计资源-图标库
  • 2. 属性:布局属性、背景属性
  • 3. 线性布局

240928

1. 设计资源-图标库

1.1 下载图标

进入图标库网站,下载SVG格式,存到项目文件resources/base/media/...

HarmonyOS 图标默认命名以 ic_ 开头,其他图标库下载的图标素材建议修改为与 HarmonyOS 命名规则相同。

1.2 使用图标
使用Image组件显示图标,添加fillColor()属性修改图标颜色
@Entry
@Component
struct Index {
  build() {
    Column(){
      //本地设计师给的图片(假如)
      Image($r('app.media.ic_personal'))
        //fillColor填充颜色
        .fillColor(Color.Green)
        .width(50)

      //鸿蒙图标库下载
      Image($r('app.media.ic_contacts_delete'))
        .fillColor(Color.Blue)
        .width(50)

      //阿里图标库下载
      Image($r('app.media.ic_like'))
        .fillColor(Color.Red)
        .width(50)
    }
  }
}


240930

2. 布局属性

组件布局

属性描述
padding内边距
margin外边距
border边框线
borderRadius边框圆角
2.1 内边距 padding

在组件内添加间距,拉开内容于组件边缘之间的距离。

属性:数字或对象{}

  • 数字:上下左右内边距相同
  • 对象{}:left、right、top、bottom可单独设置某个方向上的内边距
@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('内边距padding() test')
        .backgroundColor(Color.Pink)
        .padding(20)
      Text('内边距padding({}) test')
        .backgroundColor(Color.Green)
        .padding({
          top:20,
          left:30,
          right:40,
          bottom:50
        })
    }
  }
}

2.2 外边距 margin

在组件外面添加间距,拉开两个组件之间的距离。

属性:数字或对象{};使用方法同上padding。

@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('外边距margin() test')
        .backgroundColor(Color.Pink)
        .margin(20)
      Text('外边距margin({}) test')
        .backgroundColor(Color.Green)
        .margin({
          left:30
        })
    }
  }
}

2.3 案例-QQ音乐登录

@Entry
@Component
struct Index {
  build() {
    Column(){
      Image($r('app.media.ic_user'))
        .width(100)
      Text('大王叫我来巡山')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
        .margin(10)
      Button('QQ登录')
        .fontWeight(FontWeight.Bold)
        .width('100%')
        .margin({
          top:20
        })
      Button('微信登录')
        .fontWeight(FontWeight.Bold)
        .backgroundColor('#ddd')
        .fontColor(Color.Black)
        .width('100%')
        .margin({
          top:10
        })
    }
    .width('100%')
    .padding(20)
  }
}

2.4 边框属性 border
2.4.1 四个方向上边框属性相同

参数:{width ?: 数字 , color ?: ' ', style ?: BorderStyle}

  • width:边框宽度,默认值为0,即不显示边框
  • color:边框颜色,默认黑色
  • style:边框样式,BorderStyle枚举类型;Solid实线(默认),Dashed虚线,Dotted点线
@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('边框属性border test')
        .width(100)
        .height(100)
        .textAlign(TextAlign.Center)
        .backgroundColor(Color.Pink)
        .border(
          {width: 5,
          color: 'red',
          style: BorderStyle.Dashed})
    }
  }
}

2.4.2 四个方向上边框属性不同

书写方法

.border({
 width: {},
 color: {},
 style: {}
}
width、color、style 均可以通过top、right、bottom、left设置各个方向上的边框外观。
@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('边框属性border test')
        .width(100)
        .height(100)
        .textAlign(TextAlign.Center)
        .backgroundColor(Color.Pink)
        .border({
          //左:蓝色点线宽度2;右:橙色虚线宽度3;上下无边框
          width: {left:2,right:3 },
          color: {left:'blue',right:'orange'},
          style: {left:BorderStyle.Dotted,right:BorderStyle.Dashed}
        })
    }
    .padding(10)
  }
}


241001

2.5 边框圆角 borderRadius

参数:数值或{};topLeft左上角,topRight右上角,bottomLeft左下角,bottomRight右下角

@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('边框圆角test1,四角圆角值相同')
        .width(100)
        .aspectRatio(1)
        .backgroundColor(Color.Orange)
        .borderRadius(20)
        .margin({bottom:5})
      Text('边框圆角test2,四角圆角值不同')
        .width(100)
        .aspectRatio(1)
        .backgroundColor(Color.Brown)
        .margin({bottom:5})
        .borderRadius({
          topLeft:5,
          topRight:10,
          bottomLeft:30,
          bottomRight:50
        })

      Text('边框圆角test3,正圆,圆角值为正方形边长的1/2')
        .width(100)
        .aspectRatio(1)
        .backgroundColor(Color.Orange)
        .borderRadius(50)
        .margin({bottom:5})

      Text('边框圆角test4,胶囊状,圆角值为高度的1/2')
        .width(100)
        .height(40)
        .backgroundColor(Color.Orange)
        .borderRadius(20)
    }
    .padding(10)
  }
}

3. 背景属性

属性描述
backgroundColor背景颜色
backgroundImage背景图片
backgroundImageSize背景图片尺寸
backgroundImagePosition背景图片位置
3.1 背景颜色 backgroundColor
组件添加宽高属性或有内容才能观察到背景颜色。
3.2 背景图片 backgroundImage
属性:backgroundImage(背景图地址,背景图平铺方式ImageRepeat)
背景图平铺方式(可省略):
  • NoRepeat:不平铺,默认
  • X:水平平铺
  • Y:垂直平铺
  • XY:水平垂直均平铺
@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('背景图片test1,无平埔')
        .width(300)
        .height(200)
        .backgroundColor(Color.Grey)
        .backgroundImage($r('app.media.flower'))
      Text('背景图片test2,平埔方式XY')
        .width(300)
        .height(200)
        .backgroundColor(Color.Orange)
        .backgroundImage($r('app.media.flower'),ImageRepeat.XY)
    }
    .padding(10)
  }
}

3.3 背景图片尺寸 backgroundImageSize

作用:背景图片缩放

参数:

  • 设置背景图宽高尺寸:{width:num,height:num}(单设置宽或高,另一个尺寸等比例缩放)
  • 枚举ImageSize:Cover完全覆盖时停止缩放;Contain,宽或高与组件尺寸相同时停止缩放;Auto,默认原图尺寸。
@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('背景图片尺寸test1,宽高')
        .width(300)
        .height(200)
        .backgroundColor(Color.Grey)
        .backgroundImage($r('app.media.flower'))
        .backgroundImageSize({width:110})
      Text('背景图片尺寸test2,ImageSize.Cover')
        .width(300)
        .height(200)
        .backgroundColor(Color.Orange)
        .backgroundImage($r('app.media.flower'))
        .backgroundImageSize(ImageSize.Cover)
      Text('背景图片尺寸test3,ImageSize.Contain')
        .width(300)
        .height(200)
        .backgroundColor(Color.Pink)
        .backgroundImage($r('app.media.flower'))
        .backgroundImageSize(ImageSize.Contain)
    }
    .padding(10)
  }
}

3.4 背景图片位置 backgroundImagePosition
作⽤:调整背景图在组件内的显示位置,默认显示位置为组件左上⻆。
参数:位置坐标:{x:位置,y:位置};枚举Alignment
Alignment
TopStart顶部起始端(默认)
Top顶部横向居中
TopEnd顶部尾端
Start起始端纵向居中
Center居中
End尾端纵向居中
BottomStart底部起始端
Bottom底部横向居中
BottomEnd底部尾端
@Entry
@Component
struct Index {
  build() {
    Column(){
      Text('背景图片位置test1,默认位置')
        .width(300)
        .height(200)
        .backgroundColor(Color.Grey)
        .backgroundImage($r('app.media.flower'))
      Text('背景图片位置test2,设置x&y')
        .width(300)
        .height(200)
        .backgroundColor(Color.Orange)
        .backgroundImage($r('app.media.flower'))
        .backgroundImagePosition({x:50,y:100})
        //vp转px vp2px()
        //.backgroundImagePosition({x:vp2px(150),y:vp2px(100)})
      Text('背景图片位置test3,Alignment')
        .width(300)
        .height(200)
        .backgroundColor(Color.Yellow)
        .backgroundImage($r('app.media.flower'))
        .backgroundImagePosition(Alignment.Center)
    }
    .padding(10)
  }
}


241002

4. 线性布局

线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。Column容器内子元素按照垂直方向排列,Row容器内子元素按照水平方向排列。根据不同的排列方向,开发者可选择使用Row和Column容器创建线性布局。

4.1 基本概念
  • 布局容器:具有布局能力的容器组件,可以承载其他元素作为其子元素。
  • 布局子元素:布局容器内部的元素。
  • 主轴:线性布局容器在布局方向上的轴线,子元素默认沿主轴排列。Row容器主轴为横向,Column容器主轴为纵向。
  • 交叉轴:垂直于主轴方向的轴线。Row容器交叉轴为纵向,Column容器交叉轴为横向。
  • 间距:布局子元素的间距。
4.2 主轴方向的间距 space

在布局容器内,可以通过space属性设置主轴方向上子元素的间距,使各子元素在主轴方向上有等间距效果。

@Entry
@Component
struct Index {
  build() {
    Column(){
      //Column主轴方向上间距测试
      Column({space:20}){
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Pink)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Pink)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Pink)
      }
        .margin({bottom:5})

      //Row主轴方向上间距测试
      Row({space:20}){
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Orange)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Orange)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Orange)
      }
    }
    .padding(5)
  }
}


241003

4.3 主轴对齐方式 justifyContent

参数:FlexAlign

Column和Row组件的justifyContent属性效果相似,以下以Column为例。

@Entry
@Component
struct Index {
  build() {
    Column(){
      Column(){
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Orange)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Green)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Yellow)
      }
      .width(300)
      .height(300)
      .backgroundColor(Color.Pink)
      .justifyContent(FlexAlign.SpaceAround)
    }
    .padding(5)
  }
}

4.4 交叉轴对齐方式 alignItems

alignItems默认center;参数:枚举类型

  • 交叉轴在水平方向:HorizontalAlign -> Column
  • 交叉轴在垂直方向:VerticalAlign -> Row

注:布局容器在交叉轴要有足够空间,否则无法生效。

4.4.1 Column
@Entry
@Component
struct Index {
  build() {
    Column(){
      Column(){
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Orange)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Green)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Yellow)
      }
      .width(300)
      .height(300)
      .backgroundColor(Color.Pink)
      .alignItems(HorizontalAlign.Start)
    }
    .padding(5)
  }
}
4.4.2 Row
@Entry
@Component
struct Index {
  build() {
    Column(){
      Row(){
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Orange)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Green)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Yellow)
      }
      .width('100%')
      .height(300)
      .backgroundColor(Color.Pink)
      .alignItems(VerticalAlign.Bottom)
    }
    .padding(5)
  }
}

4.5 单个子元素交叉轴对齐方式 alignSelf

参数:枚举ItemAlign (Stretch拉伸,交叉轴拉伸效果)

@Entry
@Component
struct Index {
  build() {
    Column(){
      Row(){
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Orange)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Green)
          //交叉轴拉伸,Stretch常用
          .alignSelf(ItemAlign.Stretch)
        Text('test')
          .width(100)
          .height(50)
          .backgroundColor(Color.Yellow)
      }
      .width('100%')
      .height(300)
      .backgroundColor(Color.Pink)
      .alignItems(VerticalAlign.Bottom)
    }
    .padding(5)
  }
}

4.6 自适应缩放 layoutWeight

layoutWeight是用于指定一个元素在父容器中所占空间的比例。它是一种相对值,表示当父容器有剩余空间时,如何在子元素之间按照权重分配这些空间。(主轴)

@Entry
@Component
struct Index {
  build() {
    Column({space:10}){
      Row(){
        Text('test')
          .width(60)
          .backgroundColor(Color.Orange)
        Text('test')
          .layoutWeight(1)
          .backgroundColor(Color.Green)
      }
      .width('100%')
      .height(100)
      .backgroundColor(Color.Pink)

      Row(){
        Text('test')
          .width(60)
          .backgroundColor(Color.Orange)
        Text('test')
          .layoutWeight(2)
          .backgroundColor(Color.Green)
        Text('test')
          .layoutWeight(1)
          .backgroundColor(Color.Orange)
      }
      .width('100%')
      .height(100)
      .backgroundColor(Color.Pink)
    }
    .padding(5)
  }
}

5. 综合案例-得物探索页

@Entry
@Component
struct Index {
  build() {
    //布局思路:先外后内,先左后右,先上后下
    Column(){
      Row(){
        //左侧:两行文字,竖排
        Column({space:10}){
          Text('玩一玩')
            .fontColor('#14151a')
            .fontWeight(FontWeight.Bold)
            .fontSize(20)
          Text('签到兑礼 | 超多大奖 超好玩')
            .fontSize(14)
            .fontColor('#c4c4d1')
        }
          .alignItems(HorizontalAlign.Start)

        //右侧:两个图片,横排
        Row({space:10}){
          Image($r('app.media.du'))
            .width(80)
            .aspectRatio(1)
            .backgroundColor('#efefef')
            .borderRadius(8)
          Image($r('app.media.ic_public_arrow_right'))
            .width(20)
            .fillColor('#b7b6be')
        }
      }
        .width('100%')
        .height(150)
        .backgroundColor('#fff')
        .padding({left:20,right:10})
        .borderRadius(8)
        .justifyContent(FlexAlign.SpaceBetween)
    }
      .width('100%')
      .height('100%')
      .padding(10)
      .backgroundColor('#f5f4f9')
  }
}

6. 综合案例-得物产品卡片

@Entry
@Component
struct Index {
  build() {
    Column(){
      //产品推荐页面从上到下:图、文字、row(图、文字、图标、数字)
      Column({space:5}){
        //产品图片
        Image($r('app.media.nick'))
          .width('100%')
          .aspectRatio(1)
          .borderRadius({topLeft:8,topRight:8})

        Column({space:5}){
          //产品简单介绍,标题
          Text('今天介绍这个 | 每日穿搭分享鞋子篇')
            .fontSize(18)
            .fontWeight(FontWeight.Medium)
            .fontColor('#414141')

          Row(){
            //发布者个人信息显示
            Row(){
              Image($r('app.media.ic_user'))
                .width(15)
                .aspectRatio(1)
                .borderRadius(10)
              Text('插画师分享聚集地')
                .fontSize(12)
                .fontColor('#787a7d')
            }
            //点赞量显示
            Row(){
              Image($r('app.media.ic_like1'))
                .width(10)
                .fillColor('#c2c0ca')
              Text('2300')
                .fontSize(12)
                .fontColor('#787a7d')
            }
          }
            .width('100%')
            .justifyContent(FlexAlign.SpaceBetween)
        }
          .padding({left:10,right:10,bottom:10})
      }
        .width(250)
        .alignItems(HorizontalAlign.Start)
        .backgroundColor('#fff')
        .borderRadius(8)
    }
      .width('100%')
      .height('100%')
      .padding(10)
      .backgroundColor('#f5f4f9')
  }
}

案例中遇到的问题:Row容器组件未设置主轴方向上width数据,使用主轴对齐方式justifyContent(FlexAlign.SpaceBetween)时无效果,加上width属性问题解决。

鸿蒙应用开发之UI框架方舟ArkUI使用参考 HarmonyOS提供了⼀套UI开发框架,即⽅⾈开发框架(ArkUI框架)。⽅⾈开发框架可为开发者提供应⽤UI开发所必需的能⼒,⽐如多种组件、布局计算、动画能⼒、UI交互、绘制等。 阅读详情

相关推荐

鸿蒙开发基础 —— ArkUI 页面布局解析

为实现上述效果,开发者需要在页面中声明对应的元素。针对不同的页面结构,ArkUI提供了不同的布局组件来帮助开发者实现对应布局的效果,例如Row用于实现线性布局。组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发者可以根据自己的需求,选择合适的布局进行页面开发。布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。声明式UI提供了以下10种常见布局,开发者可根据实际应用场景选择合适的布局进行页面开发。布局相关的容器组件可形成对应的布局效果。

guangxishaoji的博客 784

ArkUI,更高效的框架设计

在预编译的过程中,数据的静态类型信息会携带在生成的统一字节码中,后端编译的时候能直接利用这种类型信息加速机器码的执行,避免了运行时收集对象造成的额外开销,同时这些类型信息被用于AOT编译过程,使得应用启动时就可以执行AOT生成的优化机器码获得高性能运行体验。完成项目开发将项目进行打包时,方舟编译器将编写的高级编程语言通过内置的工具链,编译为一种与运行设备和系统无关的可移植介质,这种介质就叫统一字节码(又称方舟码,abc文件),这个过程也称为字节码预编译。完整版的内容可查看上方的视频,我们下期再见~

HarmonyOSDev的博客 3963

鸿蒙开发基础 —— ArkUI 页面布局(相对布局 (RelativeContainer))

在应用的开发过程中,经常需要设计复杂界面,此时涉及到多个相同或不同组件之间的嵌套。如果布局组件嵌套深度过深,或者嵌套组件数过多,会带来额外的开销。如果在布局的方式上进行优化,就可以有效的提升性能,减少时间开销。RelativeContainer为采用相对布局的容器,支持容器内部的子元素设置相对位置关系,适用于界面复杂场景的情况,对多个子组件进行对齐和排列。子元素支持指定兄弟元素作为锚点,也支持指定父容器作为锚点,基于锚点做相对位置布局。

guangxishaoji的博客 835

【HarmonyOS4.0】第四篇-ArkUI基础实战

ArkUI开发框架是方舟开发框架的简称,它是一套构建 HarmonyOS / OpenHarmony 应用界面的声明式UI开发框架,它使用极简的UI信息语法、丰富的UI组件以及实时界面语言工具,帮助开发者提升应用界面开发效率 30%,开发者只需要使用一套 TS / JS API,就能在多个 HarmonyOS / OpenHarmony 设备上提供既丰富又流畅的用户界面体验。

weixin_42533732的博客 3386

鸿蒙ArkUI之【如何选择布局?】

声明式UI提供了以下9种常见布局,开发者可根据实际应用场景选择合适的布局进行页面开发。position、offset等属性影响了布局容器相对于自身或其他组件的位置。

m0_62167422的博客 1486

鸿蒙(HarmonyOS)ArkUI布局优化指南~

DevEco Studio内置ArkUI Inspector工具,开发者可以使用ArkUI Inspector,在DevEco Studio上查看应用在真机上的UI显示效果。利用ArkUI Inspector工具,开发者可以快速定位布局不理想或其他UI相关问题,同时也可以观察和了解不同组件之间的布局关系和属性。鸿蒙战略胜利,目前鸿蒙开发是一个急需要人才的缺口,在未来几年势必会有大量的鸿蒙岗位出现,目前所存在的鸿蒙岗位也是给出了相当高的薪资。事实证明,鸿蒙开发确实是一块香饽饽。

weixin_48091641的博客 1592

ArkUI框架之基础布局(一)

本文介绍了线性布局(Column/Row)的基本概念和使用方法。线性布局通过主轴和交叉轴排列子元素,Column垂直排列,Row水平排列。可以通过space属性设置子元素间距,justifyContent属性设置主轴对齐方式(6种),alignItems属性设置交叉轴对齐方式。文中通过代码示例演示了不同对齐方式的效果,包括垂直靠上/居中/靠下对齐,以及按比例设置间距的多种方式。

leon_teacher 2132

【鸿蒙开发实战篇】详细介绍ArkUI中线性布局,层叠布局和弹性布局

三个布局组件讲完了,篇幅还是蛮大的,其实看过鸿蒙开发者官方文档的人应该也都发现了,本篇文章知识点的讲解顺序就是按照官方文档来的,看了每个知识点,然后分别手写下对应的demo和自己的理解,后面其他布局组件都也会以这种方式讲解,枯燥是枯燥了点,但相比于仅仅是看文档来说,这才是最有效的掌握知识点的方法。

HarmonyOS_001的博客 1480

ArkUI框架之基础布局(二)

本文介绍了ArkUI中的两种基础布局:相对布局(RelativeContainer)和滚动容器(Scroll)。相对布局通过锚点和对齐方式实现子组件相对于父容器或兄弟组件的定位,支持位置偏移调整。滚动容器(Scroll)用于内容超出容器尺寸时的滚动显示,需注意其只能包含一个子组件且子组件尺寸需大于容器。文章通过代码示例和图示展示了两种布局的核心用法和注意事项。

leon_teacher 844

鸿蒙开发基础 —— ArkUI 页面布局(弹性布局 (Flex))

弹性布局( Flex )提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。常用于页面头部导航栏的均匀分布、页面框架的搭建、多行数据的排列等。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸。图1主轴为水平方向的Flex容器示意图。

guangxishaoji的博客 1077

鸿蒙ArkUI布局性能优化实战

鸿蒙ArkUI布局与性能优化技术通过2x2 RC布局方案简化多设备适配,采用弹性排列与媒体查询实现响应式布局,利用RelativeContainer减少嵌套层级提升性能。同时通过组件懒加载与复用机制降低内存占用,优化渲染效率。这些技术有效解决了多设备适配复杂性和性能瓶颈问题,为开发者提供了轻量化、高性能的跨设备开发方案。

2501_93035758的博客 1435

HarmonyOS6.0开发之ArkUI & 鸿蒙布局:从“写注释”到“搭界面”,新手也能玩转APP界面设计

摘要:本文由资深程序员Feri分享鸿蒙开发中的ArkUI注释与基础布局技巧。文章将APP开发比作搭积木,ArkUI作为工具箱提供组件(积木)、布局(图纸)和注释(便利贴)。重点讲解三种注释写法(单行、多行、文档注释)和六种基础布局类型,特别是线性布局(Row/Column)的实战应用。通过"顶部导航栏"和"登录界面"两个实例,演示如何使用Row实现水平排列和Column实现垂直排列,并强调布局嵌套原则和开发技巧(设宽高、组件封装、先搭骨架)。适合新手快速掌握界面开发基

程序员Feri 1712

【鸿蒙基于API 13实战开发】—— ArkUI 页面布局解析

组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发者可以根据自己的需求,选择合适的布局进行页面开发。布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。

shangkangba的博客 987

【HarmonyOS】ArkUI 布局与容器组件

在 HarmonyOS 应用开发中,优秀的界面布局是用户体验的基础。ArkUI 作为新一代声明式 UI 开发框架,提供了丰富多样的布局组件和容器组件,帮助开发者高效构建复杂界面。本文将系统性地介绍 ArkUI 的核心布局方式,包括线性布局、层叠布局、弹性布局等基础布局,以及列表、轮播、选项卡等高级容器组件。Swiper() {.aspectRatio(2) //宽高比为2Indicator.dot()// 小圆点.itemWidth(20)// 默认的宽.itemHeight(20)//默认的高。

2401_88174794的博客 1007

基于OpenHarmony/HarmonyOS操作系统的ArkUI框架深入学习

ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具,帮助您提升HarmonyOS应用界面开发效率30%。您只需使用一套TS/JS API,就能在多个HarmonyOS设备上提供生动而流畅的用户界面体验。

一键难忘的博客 2964

Discuz IIS上传附件大于28M失败报错Upload Failed.修改maxAllowedContentLength(图文教程)

下图:Discuz X3.5的系统信息,上传许可为1024MB(1GB)论坛为局域网论坛,仅供内部同事交流使用!使用官方最新的Discuz! X3.5 Release 20231221 UTF-8 下图:选择上传附件(提示可以最大上传100M) 下图:模拟上传84M的文件(

骚团长的博客 1830

鸿蒙ArkUI布局与样式进阶(四)——从 Column 到 Grid,一篇搞懂常用布局(含实战案例与逐行注释)

本文系统介绍了鸿蒙ArkUI六大核心布局:Column(垂直布局)、Row(水平布局)、Flex(弹性布局)、Position(绝对定位)、Stack(层叠布局)和Grid(网格布局)。通过生动的比喻和详细代码示例,解析了每种布局的特点、参数说明和适用场景,并提供了综合实战案例和对比总结表。文章特别指出:Position需谨慎使用,Flex嵌套要注意性能,建议先用Row/Column搭骨架,再用Flex/Stack微调。掌握这些布局可满足80%的UI开发需求,是构建电商首页、视频推荐页等复杂界面的关键。

2502_91577682的博客 1897

机器学习之性能度量

废话不说,本文分为两个部分: 第一部分,我对周志华教授《机器学习》这本书中性能度量知识点中疑难点的学习感悟;第二部分,我感觉该书2.3节 性能度量 中最后部分的代价曲线表述有误,苦于没找到联系教授的正确方式,故希望与广大网友一起探讨。

hustqb的博客 4628

鸿蒙 ArkUI 基础布局

鸿蒙 ArkUI 提供了灵活的 UI 组件和布局方式,支持声明式 UI 开发,使开发者能够快速构建界面。本教程介绍 ArkUI 的基础布局方式,包括组件的使用。

猿人在北京 593

ABAP Reduced Message Types:用精简 IDoc + Change Pointer,把主数据分发做得又快又省

本文介绍了SAP系统集成中主数据分发的精简优化方法。通过创建"精简消息类型"(Reduced Message Types),可以在不改标准IDoc类型的前提下,只发送接收系统真正需要的数据。文章详细解析了主数据变更链路的完整流程,包括变更文档、变更指针和IDoc生成机制,并重点说明了如何在BD53事务中创建精简消息类型、选择保留字段、激活变更指针等实操步骤。此外,还介绍了通过BD59过滤对象和BD64分发模型实现更精确的数据分发,以及变更指针的激活验证、IDoc生成作业和定期清理等运维要

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 134

ArkUI布局指南:解锁高效界面搭建的秘密

在 HarmonyOS 应用开发的世界里,ArkUI 的布局选择是一场精心的规划。线性布局以其简洁有序,为列表和表单搭建起整齐的框架;弹性布局凭借灵活适应的特性,在复杂页面中巧妙分配空间;层叠布局通过元素叠加,创造出富有层次感的视觉效果;相对布局基于锚点定位,实现元素间精准的位置关系;栅格布局为响应式设计提供有力支持,使界面在不同设备上完美适配;列表布局则高效展示长列表数据,成为数据展示的得力助手。随着 HarmonyOS 生态的不断发展壮大,相信 ArkUI 的布局能力也将持续进化。

大雨淅淅的博客 921

损失函数大汇总(三十八)(AUCPR Loss附公式推导与代码)

本文系统介绍了AUCPR Loss的原理与应用。针对不平衡分类任务中AUC指标不够敏感的问题,提出通过优化PR曲线面积(AUCPR)来提升模型性能。文章详细推导了AUCPR的可微近似实现:首先用sigmoid函数软化阈值判断,构造可微的TP/FP/FN计数;然后基于软Precision和Recall计算近似PR曲线面积;最后通过数值积分得到可优化的损失函数。特别讨论了温度参数τ对训练稳定性的影响,并比较了AUCPR与AUC、AP等指标的异同。该方法适用于医学筛查、欺诈检测等极端不平衡场景,能更准确反映模型对

悦学共鸣,温柔以待,汇聚光芒,共同成长 441
上一篇: 二、ArkUI界面设计1(组件-样式-基础)
下一篇: 四、ArkUI界面设计3(高级布局)
bpmf_fff
博客等级 码龄6年 219粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值