Harmony os next~UI开发与ArkUI框架

简介: 鸿蒙OS的UI开发基于ArkUI框架,采用声明式编程,简化开发流程。五大核心组件(Text、Button、List、Grid、Flex)助力高效布局,支持数据绑定与动态更新。事件响应机制灵敏,适合构建交互丰富的应用。实战技巧包括规范命名、样式复用和调试方法。掌握这些,轻松开发鸿蒙应用。下期预告:分布式开发,记得带上烤冷面!

Harmony os next~UI开发与ArkUI框架

老铁!今儿咱来唠唠鸿蒙开发这档子事儿,手把手教你整明白鸿蒙的UI开发咋玩儿,保准比炖酸菜还带劲!


一、ArkUI框架:鸿蒙的"大铁锅"

1.1 声明式UI是啥?

  • 就跟点菜似的!说你要啥(声明效果),不用管后厨咋炒(不写具体步骤)
  • 传统命令式UI(Android/iOS):
    "服务员!先切葱姜蒜!倒油烧热!下肉翻炒!..."
  • 鸿蒙ArkUI:
    "给我整盘锅包肉!糖醋汁儿多点!"

1.2 组件化开发思想

  • 跟搭乐高似的!把界面拆成可复用的积木块
  • 举个栗子🌰:
// 自定义一个带图标的按钮组件
@Component
struct IconButton {
   
  iconSrc: Resource // 图片路径
  btnText: string  // 按钮文字

  build() {
   
    Column() {
   
      Image(this.iconSrc) // 图标
        .width(40)
      Text(this.btnText)  // 文字
        .fontSize(16)
    }.onClick(() => {
   
      // 点击事件处理
    })
  }
}
// 使用的时候跟拼积木似的:
IconButton({
   iconSrc: $r('app.media.home'), btnText: '首页'})

二、必学五大金刚组件(附代码)

2.1 Text组件 - 文字显示扛把子

Text('俺们东北银都是活雷锋!')
  .fontSize(24) // 字号
  .fontColor('#FF4500') // 橘红色
  .textAlign(TextAlign.Center) // 居中
  .decoration({
   type: TextDecorationType.Underline}) // 加下划线

2.2 Button组件 - 点击触发必备

Button('点我整点狠活儿!')
  .width('80%') // 宽度占80%
  .backgroundColor('#4A90E2') // 按钮颜色
  .onClick(() => {
   
    // 点击后触发这个回调
    showToast('哎呀妈呀,真点啊!');
  })

2.3 List组件 - 列表展示神器

// 显示东北特色菜列表
@Entry
@Component
struct FoodList {
   
  private foods: string[] = ['锅包肉', '地三鲜', '杀猪菜', '溜肉段']

  build() {
   
    List({
   space: 10}) {
    // 列表项间距10
      ForEach(this.foods, (item) => {
   
        ListItem() {
   
          Text(item)
            .fontSize(20)
            .padding(15)
        }
        .borderRadius(10) // 圆角边框
        .backgroundColor('#FFF')
      })
    }
    .backgroundColor('#F5F5F5')
  }
}

2.4 Grid组件 - 网格布局大法

// 显示九宫格图片
@Entry
@Component
struct PhotoGrid {
   
  private images: Resource[] = [
    $r('app.media.pic1'),
    $r('app.media.pic2'),
    //... 总共9张图
  ]

  build() {
   
    Grid() {
   
      ForEach(this.images, (img) => {
   
        GridItem() {
   
          Image(img)
            .aspectRatio(1) // 保持正方形
            .objectFit(ImageFit.Cover) // 图片填充
        }
      })
    }
    .columnsTemplate('1fr 1fr 1fr') // 三列等宽
    .rowsGap(10) // 行间距
    .columnsGap(10) // 列间距
  }
}

2.5 Flex布局 - 弹性盒子

// 横向排列的三个按钮
Flex({
    direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceAround }) {
   
  Button('点赞').width('30%')
  Button('收藏').width('30%')
  Button('转发').width('30%')
}
.width('100%')
.padding(15)

三、动态UI更新(跟变脸似的)

3.1 数据绑定

@Entry
@Component
struct Counter {
   
  @State count: number = 0 // 带@State的变量会触发UI更新

  build() {
   
    Column() {
   
      Text(`当前计数:${
     this.count}`)
        .fontSize(30)

      Button('加一')
        .onClick(() => {
   
          this.count += 1 // 点一下数字自动变
        })
    }
  }
}

3.2 条件渲染

// 根据登录状态显示不同内容
@Entry
@Component
struct UserInfo {
   
  @State isLogin: boolean = false

  build() {
   
    Column() {
   
      if (this.isLogin) {
   
        Text('欢迎老铁回来!')
          .fontColor('green')
      } else {
   
        Button('赶紧登录')
          .onClick(() => {
   
            this.isLogin = true
          })
      }
    }
  }
}

四、事件响应(比广场舞大妈还灵敏)

4.1 点击事件(基础款)

Button('点我看惊喜')
  .onClick(() => {
   
    // 这里写点击后的操作
    prompt.showToast('surprise mother fxxker!')
  })

4.2 滑动事件(高级操作)

// 实现左滑删除效果
@Entry
@Component
struct SwipeList {
   
  @State items: string[] = ['貂皮大衣', '东北大花袄', '军大衣']

  build() {
   
    List() {
   
      ForEach(this.items, (item, index) => {
   
        ListItem() {
   
          Swiper() {
   
            Flex({
    justifyContent: FlexAlign.Start }) {
   
              Text(item).fontSize(20)
            }
            .width('100%')
            .padding(15)

            // 右侧删除按钮
            Flex({
    justifyContent: FlexAlign.End }) {
   
              Button('删除')
                .backgroundColor('red')
                .onClick(() => {
   
                  this.items.splice(index, 1)
                })
            }
            .width('30%')
          }
          .edgeEffect(EdgeEffect.Spring) // 滑动弹簧效果
        }
      })
    }
  }
}

五、实战技巧(老司机经验)

  1. 组件命名规范
    商品卡片GoodsCard,别整aaa这种名儿,回头自己都找不着北

  2. 样式复用
    把常用样式抽成函数:

    // 定义红色警告文字样式
    function warningText() {
         
      return {
         
        fontSize: 18,
        color: '#FF0000',
        fontWeight: 500
      }
    }
    // 使用的时候
    Text('库存不足!').style(warningText())
    
  3. 调试大法
    console.info('当前值:', this.value)输出日志,比瞎猜强!


重点总结:

  1. ArkUI的核心是声明式编程,告别繁琐操作
  2. 五大基础组件得玩得溜,就像东北人玩冰尜
  3. 动态更新靠@State,数据一变UI跟着颤
  4. 事件处理要丝滑,用户体验顶呱呱

下回咱整点更硬核的——鸿蒙分布式开发,记得揣俩烤冷面来听课啊!

相关文章
|
4月前
|
监控 JavaScript 编译器
从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。
586 64
|
4月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
600 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
516 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
900 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
261 0
|
5月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
778 0
|
9月前
|
开发框架 前端开发 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
312 15
|
9月前
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
351 11
|
5月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
463 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
8月前
|
JavaScript 前端开发 UED
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发四
本文介绍了Web组件开发与性能优化的相关内容。在Web组件开发部分,涵盖创建组件、设置样式与属性、添加事件和方法以及场景示例,如动态播放视频。性能提升方面,推荐使用数据懒加载、条件渲染替代显隐控制、Column/Row替代Flex、设置List组件宽高及调整cachedCount减少滑动白块等方法,以优化应用性能与用户体验。
301 56

热门文章

最新文章

推荐镜像

更多