ArkUI 基本语法

方舟开发框架(简称:ArkUI),是一套 构建HarmonyOS应用 界面 的框架。
构建页面的最小单位就是 “组件”。
组件名(参数) {
内容
}
.属性1()
.属性2()
.属性N()
系统组件
Text 显示文本
Image 显示图片
Column 列,内容垂直排列
Row 行,内容水平排列
Button 按钮

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('小说简介')
      Row() {
        Text('都市')
        Text('生活')
        Text('情感')
        Text('男频')
      }
    }
  }
}

通用属性
属性 描述
width 宽度
height 高度
backgroundColor 背景色

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('小说简介')
        .width('100%')
        .height(40)
      Row() {
        Text('都市')
          .width(50)
          .height(30)
          .backgroundColor(Color.Orange)
        Text('生活')
          .width(50)
          .height(30)
          .backgroundColor(Color.Pink)
        Text('情感')
          .width(50)
          .height(30)
          .backgroundColor(Color.Yellow)
        Text('男频')
          .width(50)
          .height(30)
          .backgroundColor(Color.Gray)
      }
      // 宽度100%后, 内容居左对齐
      .width('100%')
    }
  }
}

尺寸单位

  1. px :物理像素,也叫设备像素,设备实际拥有的像素点(出场设置、分辨率单位)
    问题:如果用 px 作为宽高单位,又想保证不同显示能力的设备,视觉效果一样大,
    就需要针对每个设备单独编码,设置尺寸,非常麻烦。
    能不能有个单位,帮我们自动根据显示能力,来进行转换大小,保证多设备视觉效果一致呢?
  2. vp :virtual pixel 虚拟像素 【推荐使用】
    ● 会根据不同设备的显示能力,自动进行转换成对应 px 物理像素,保证不同设备视觉一致
    ● 当数值不带单位时,默认单位 vp
    ● 基于目前预览器和常规手机的显示能力,vp 和 px 的对应关系,大约为 3 倍,1vp ≈ 3px (超清屏手机)

文本属性
使用:.属性(参数)
属性 描述
fontSize 字体大小
fontColor 字体颜色
fontStyle 字体样式
fontWeight 字体粗细
lineHeight 文本行高
decoration 文本修饰线及颜色
textAlign 水平方向Text对齐方式
align 垂直方向对齐方式
textIndent 文本首行缩进
textOverflow 设置文本超长时的显示方式
maxLines 设置文本的最大行数

字体颜色
属性:fontColor(颜色色值)
色值:
● 颜色枚举值:Color.xx,例如:Color.Pink
● 十六进制(HEX)颜色,例如:'#ffffff’或“#fff”
● rgb() 或 rgba()颜色
○ rgb(r, g, b), 取值为 0 ~ 255
○ rgba(r, g, b, a),a 为透明度,取值范围 0 ~ 1
字体样式
作用:设置字体是否倾斜
属性:fontStyle()
参数:枚举FontStyle
● Normal:正常字体(不倾斜)
● Italic:斜体

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统一的语言。带来简洁,流畅,连续,安全可靠的全场景交互体验。')
        .fontSize(14)
        .textIndent(28)
    }
  }
}

@Entry
@Component
struct Index {
build() {
Column() {
Text(‘HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统一的语言。带来简洁,流畅,连续,安全可靠的全场景交互体验。’)
.fontSize(14)
.textIndent(28)
.maxLines(2)
// 超长文本使用省略号代替
.textOverflow({overflow: TextOverflow.Ellipsis})
// 裁剪超长文本
.textOverflow({overflow: TextOverflow.Clip})
// 超长文本滚动显示
.textOverflow({overflow: TextOverflow.MARQUEE})
}
}
}

<think>好的,用户想查找ArkUI的基本组件示例或案例。首先,我需要回忆一下系统提供的引用内容,看看哪些部分提到了ArkUI的组件示例。 引用1提到了在ArkUI中使用Button组件的实际案例,展示了如何通过按钮点击事件改变图片大小,还有代码示例和图示。这应该是一个很好的基本组件示例。引用2则讨论了如何封装自定义Button组件,并穷举原生属性,这可能涉及Button的基本用法和扩展。引用3提到自定义组件复用的性能优化,虽然主要是性能方面的,但也可能涉及组件的使用方法。引用4提到Span子组件的使用注意事项,这也是基本组件的一部分。 接下来,我需要整理这些引用中的信息,按照用户的要求提供示例或案例。用户需要的是基本组件,比如Button、Text、Span、Image等。根据引用1,Button组件的示例包括点击事件和动态修改属性,可以详细说明。引用4中的Span使用场景和注意事项也需要包含进去。另外,引用2中的自定义组件虽然属于高级用法,但可能对用户有帮助,可以简要提及。 需要注意的是,回答要符合系统级指令:行内公式用$...$,独立公式单独成段(虽然ArkUI可能不涉及数学公式,但如果有的话要处理),正确使用LaTeX语法,中文回答,生成相关问题,引用标识放在引用段落末尾。 用户的问题是关于ArkUI基本组件的示例或案例,所以重点应该放在基本组件的使用示例上,比如Button、Text、Span、Image等的代码片段和说明。每个示例需要结合引用中的内容,正确标注引用来源。 最后,生成的相关问题要围绕ArkUI的基本组件,比如如何自定义样式、如何实现交互、最佳实践、组件复用等,确保问题与用户查询相关,并基于提供的引用材料。</think>### ArkUI基本组件示例与案例解析 #### 1. **基础Button组件** ArkUI的Button组件可通过事件绑定实现交互效果。以下案例展示按钮点击后动态修改图片大小: ```javascript // 声明式UI范式代码示例 @Entry @Component struct Index { @State imageSize: number = 100; build() { Column() { Button('点击缩放') .onClick(() => { this.imageSize = this.imageSize === 100 ? 150 : 100; }) Image($r('app.media.icon')) .width(this.imageSize) .height(this.imageSize) } } } ``` 该案例通过`@State`装饰器实现状态管理,点击按钮触发`onClick`事件修改图片尺寸[^1]。 #### 2. **Text与Span组件** 文本组件支持嵌套Span子组件实现富文本: ```javascript Text() { Span('重要通知') .fontColor('#FF0000') .fontWeight(900) // 注意避免设置非法值(如1000) Span(':系统将于今晚升级') } ``` 需注意: - Span组件会覆盖Text组件的默认文本内容 - 异常属性值(如`fontWeight:1000`)会导致渲染异常[^4] #### 3. **自定义组件封装** 通过组件复用提升开发效率,以下为自定义Button封装示例: ```javascript @Component struct MyButton { @Prop text: string = ''; @Prop stateEffect: boolean = true; build() { Button(this.text) .fontSize(12) .fontColor('#FFFFFF') .stateEffect(this.stateEffect) // 需穷举所有需要继承的原生属性 } } ``` 这种封装方式既保留了原生Button的功能,又统一了样式规范[^2]。 #### 4. **性能优化建议** 组件复用可提升渲染性能: - 复用节省约85%的JS对象创建时间 - 组件树结构稳定时可复用组件层级结构 - 避免在复用组件中频繁改变组件树结构[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值