首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【OpenHarmony】OpenHarmony 开发基础 ③ ( @State 注解修饰变量 | Row 布局 | OpenHarmony 的 Length 属性值 | Column 布局 )

【OpenHarmony】OpenHarmony 开发基础 ③ ( @State 注解修饰变量 | Row 布局 | OpenHarmony 的 Length 属性值 | Column 布局 )

作者头像
韩曙亮
发布2024-06-02 08:13:01
发布2024-06-02 08:13:01
5900
举报

一、OpenHarmony 开发基础

在上一篇博客 【OpenHarmony】OpenHarmony 开发基础 ② ( DevEco Studio 常用工具 | 参考文档 | 预览器 | 检查器 | 项目文件结构 | Index.ets 首界面 ) 中 , 分析了部分 index.ets 代码 的内容 ,

系统默认生成的 index.ets 代码如下 :

代码语言:javascript
复制
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

下面继续分析上述代码的内容 , 进行基础代码分析 ;

1、@State 注解修饰变量

@State message: string = 'Hello World'; 代码分析 :

message: string 是一个变量 ;

@State 注解用于管理页面级变量的状态 , 并且与自定义组件的渲染紧密相关 ;

为该变量设置 @State 注解 , 当 @State 装饰的变量 数据发生变化时 , 会触发所在组件的 build 方法重新渲染 UI 组件 , 从而实现状态与UI的实时绑定更新 ;

2、Row 水平线性布局

在 OpenHarmony 中 , Row 布局组件 就是一个水平的 线性布局 , 该布局中的 组件元素 在水平方向上排列 , 常用属性如下 :

  • space 属性 : 子组件的间距 可以通过 space 属性设置 , 默认间距为 0 ;
  • alignItems 属性 : 设置 子组件 垂直方向 的 对齐方式 ;
    • VerticalAlign.Center : 垂直方向 居中对齐 , 默认值 ;
    • VerticalAlign.Top: 垂直方向 顶部对齐 ;
    • VerticalAlign.Bottom: 垂直方向 底部对齐 ;
  • justifyContent 属性 : 设置 子组件 水平方向 的 对齐方式 ;
    • FlexAlign.Start : 水平方向 左对齐 ;
    • FlexAlign.Center : 水平方向 居中对齐 ;
    • FlexAlign.End : 水平方向 右对齐 ;

在下面的 build(){} 中添加 Row 组件 , 然后在 Row 组件中再添加了 Column 组件 ;

代码语言:javascript
复制
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('50%')
    }
    .height('100%')
  }

Column 组件 垂直方向 默认 在 Row 中 居中对齐 , 水平方向 默认在 Row 中左对齐 ;

Row 组件代码示例 :

代码语言:javascript
复制
@Entry
@Component
struct Example {
  build() {
    Row({ space: 10 }) { // 设置子组件间距为10

      Text('Text1')
        .fontSize(20)
        .backgroundColor(Color.Green)

      Text('Text2')
        .fontSize(20)
        .backgroundColor(Color.Yellow)

      Text('Text3')
        .fontSize(20)
        .backgroundColor(Color.Gray)

    }
    .width('80%') // 设置 Row 的宽度
    .height('30') // 设置 Row 的高度
    .backgroundColor(Color.Pink)
  }
}

预览器显示效果 : Row 组件宽度占整体宽度的 80% , 高度是 30 vp 视窗像素 ;

3、OpenHarmony 的 Length 属性值

在上面涉及到很多设置长度属性的地方 , 如 :

  • space: 10 设置 Row 布局中的 子组件 之间的 水平间距 ;
  • fontSize(20) 设置 Text 组件 的 字体大小 ;
  • width('80%') 设置 组件宽度 ;
  • height('30') 设置 组件高度 ;

OpenHarmony 的 Length 属性值 用于设置组件的尺寸相关属性 , 如 : 宽度 / 高度 / 内边距 / 外边距 等 , 这个属性值可以是 :

  • 具体的数值 : 具体数值 有两种计量单位 , 分别是 视窗像素 vp , 物理像素 fp , 分别类似于 Android 中的 屏幕像素 dp 和 实际像素 px ;
    • 视窗像素 : 是一种虚拟的像素单位 , 该像素值并不直接对应屏幕上的实际物理点 , 而是根据设备的像素密度和屏幕尺寸进行调整 ; 一般开发时都使用 视窗像素 ;
    • 物理像素 : 就是实际上屏幕中的像素点 , 开发时 基本不使用 , 无法进行多机型适配 ;
  • 相对于 父容器 的百分比 : 注意 这里是 相对于 父容器 的百分比 , 不是 屏幕的 百分比 ; 在 组件 布局时 , 基本都使用 百分比 进行布局 ;

4、Column 垂直线性布局

OpenHarmony 的 Column 组件 是 垂直线性布局 , 布局中的子组件 沿垂直方向进行排列 , , 常用属性如下 :

  • space 属性 : 子组件的 垂直 间距 可以通过 space 属性设置 , 默认间距为 0 ;
  • alignItems 属性 : 设置 子组件 水平方向 的 对齐方式 ;
    • HorizontalAlign.Start : 水平方向 左对齐 ;
    • HorizontalAlign.Center : 水平方向 居中对齐 , 默认值 ;
    • HorizontalAlign.End : 水平方向 右对齐 ;
  • justifyContent 属性 : 设置 子组件 垂直方向 的 对齐方式 ;
    • FlexAlign.Center : 垂直方向 居中对齐 ;
    • FlexAlign.Top: 垂直方向 顶部对齐 , 默认值 ;
    • FlexAlign.Bottom: 垂直方向 底部对齐 ;

代码示例 :

代码语言:javascript
复制
@Entry
@Component
struct Example {
  build() {
    Column({ space: 20 }) { // 设置子组件间距为10

      Text('Text1')
        .fontSize(20)
        .backgroundColor(Color.Green)

      Text('Text2')
        .fontSize(20)
        .backgroundColor(Color.Yellow)

      Text('Text3')
        .fontSize(20)
        .backgroundColor(Color.Gray)

    }
    .width('50%') // 设置 Row 的宽度
    .height('50%') // 设置 Row 的高度
    .backgroundColor(Color.Pink)
    .alignItems(HorizontalAlign.Center) // 水平居中
    .justifyContent(FlexAlign.Center) // 垂直居中
  }
}

预览器效果 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、OpenHarmony 开发基础
    • 1、@State 注解修饰变量
    • 2、Row 水平线性布局
    • 3、OpenHarmony 的 Length 属性值
    • 4、Column 垂直线性布局
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档