HarmonyOS开发实战:CustomUI组件

185 篇文章 0 订阅
181 篇文章 1 订阅

 silk_ui 是基于HarmonyOS的UI框架,可以快速开发UI界面。兼容api11以上。

下载安装

ohpm install silk_ui

基础组件

CustomPopup 抽屉

1.介绍

抽屉组件。用于侧边抽屉或者底部、顶部的弹框

2.引入

import { CustomPopup } from "silk_ui"

3.使用

  1. 基础用法

    使用状态变量控制是否显示 组件内使用@Link装饰show参数接收

    该组件可放置于build函数或者@Builder函数内部任意合法位置,不影响其布局

    CustomPopup({
      show: this.showPopupCenter
    }) {
      Column(){
        Text('内容区')
      }
    }
    
  2. 设置位置

    通过传递showPosition参数设置弹框展示位置,'top' | 'bottom' | 'left' | 'right' | 'center'不传默认'center'

    该参数非状态变量

    CustomPopup({
       show: this.showPopupCenter,
       showPosition: 'left'
    }) {
       Column(){
         Text('内容区')
       }
    }
    
  3. API

    1. props
参数说明类型默认值
@Link show是否展示抽屉booleanfalse
showOverlay是否展示遮罩booleantrue
showPosition抽屉展示位置'top' | 'bottom' | 'left' | 'right' | 'center''center'
overlayColor遮罩颜色ResourceColor'#B3000000'
duration动画时长number300
round抽屉圆角Length0
widthValue展示位置为'left' 'right'时 的宽度,不支持自适应撑开。number | string'70%'
close_on_click_overlay点击遮罩是否关闭抽屉booleantrue
showClose是否展示关闭按钮booleanfalse
close_icon关闭按钮图标ResourceStr
close_icon_position关闭按钮位置'top-left' | 'top-right' | 'bottom-left' | 'bottom-right''top-right'
safe_top是否规避状态栏booleanfalse
safe_bottom是否规避底部导航栏booleanfalse
  1. event 使用方法传递(注意传递方法时的this指向)
参数说明类型默认值
before_close关闭前回调 返回true则关闭 返回false可以阻止关闭() => (boolean | Promise<boolean>)() => true
click_overlay遮罩点击() => void() => { }
click_close关闭按钮点击同上
open显示时立即触发同上
close关闭后立即触发同上
  1. @BuilderParams

    @BuilderParam
    default: () => void
    

    仅此一个 推荐使用尾随闭包方式传递

DropDownMenu 下拉菜单

1.介绍

下拉菜单组件。用于下拉菜单的展示。和前端vant的组件功能类似 2.引入

import { DropDownMenu } from "silk_ui"

3.使用

  1. 基础用法

    使用状态变量控制菜单的文本内容 组件内使用@Link装饰value参数接收

    通过options参数设置下拉菜单的选项,options为数组,数组元素为对象,对象包含text和value两个属性 导出了DropDownMenuItemInterface接口

    import { DropDownMenu, DropDownMenuItemInterface } from '@ohos/ui_component'
       @State
       value: number = 0
       @State
       list: DropDownMenuItemInterface[] = [{
         text: '选项1',
         value: 0
       }, {
         text: '选项2',
         value: 1
       }, {
         text: '选项3',
         value: 2
       }]
    
    
    DropDownMenu({
       value: this.value,
       options: this.list,
    })
    

2.自定义内容

通过传递@BuilderParam参数设置自定义内容,可使用尾随闭包方式传递


`该参数非状态变量`
` !!!注意 自定义内容时 
需要设置菜单的文本内容,传入text属性 必传 该参数使用@Prop装饰
需要设置菜单的状态,传入menuFlag属性 必传 该参数使用@Prop装饰
需要设置菜单的状态改变方法,传入changeStatus属性 必传 该参数使用@Prop装饰
并且点击事件需要自行处理。
`
``

```arkTS
@State // 菜单项文本
text: string = this.list[0].text
@State // 菜单状态
menuFlag: boolean = false
changeFlag(flag: boolean):void {
  this.menuFlag = flag
}
  
DropDownMenu({
  value: this.value,
  text: this.text,
  menuFlag: this.menuFlag,
  changeStatus: (flag: boolean) => this.changeFlag(flag)
}) {
  Column(){
    ForEach(this.list, (item: DropDownMenuItemInterface, index: number) => {
      Row(){
        Text(item.text)
          .fontColor(item.value === this.value ? $r('app.color.base_color') : Color.Black)
        Image($r('app.media.ic_public_ok'))
          .width(16)
          .aspectRatio(1)
          .fillColor($r('app.color.base_color'))
          .visibility(item.value === this.value ? Visibility.Visible : Visibility.Hidden)
      }
      .onClick(() => {
        this.text = item.text
        this.value = item.value
        this.menuFlag = false
      })
    })
  }
  .width('100%')
  .backgroundColor(Color.White)
  .borderRadius({
    bottomLeft: 16,
    bottomRight: 16
  })
}
  1. API

    1. props
参数说明类型默认值
@Link value选中项的value属性string | number-
@Prop text如果使用自定义内容区 则该参数必传string-
@Prop options列表项 如果传递 默认使用默认内容区DropDownMenuItemInterface[][]
@Prop menuFlag菜单展开状态 如果使用自定义内容区 则该参数必传booleanfalse
@Prop changeStatus修改菜单展开状态方法 如果使用自定义内容区 则该参数必传(flag: boolean) => void(flag) => this.menuFlag = flag
@BuilderParam default自定义内容区() => void-
directionValue菜单展开方向'down' | 'up''down'
duration动画时长number300
round菜单圆角Length0
overlay_color遮罩颜色ResourceColor'#B3000000'
close_on_click_overlay点击遮罩是否关闭菜单booleantrue
close_on_click_outside点击菜单或其它元素是否关闭菜单booleantrue
active_color主题色ResourceColor'#0581ce'
hasOverlay是否有遮罩booleantrue
@Prop disabled是否禁用booleanfalse

CustomToast 对话框

1.介绍

对话框组件。用于弹出对话框 采用函数式调用。有success error warn toast四个方法 2.引入

import { CustomToast } from "silk_ui"

3.使用

  1. 基础用法

    CustomToast.success('成功')
    
    1. 自定义用法

      CustomToast.success({
        message: '标题',
        duration: 1000,
        showIcon: true,
        icon: '***',
        showPosition: 'center'
      })
      
    2. API

参数说明类型默认值
message内容 必传ResourceStr''
duration持续时间 毫秒number2000
showIcon是否展示图标booleantrue
icon自定义图标ResourceStr-
showPosition展示位置'top' | 'bottom' | 'center''center'

CustomList 列表

1.介绍

列表组件。用于展示列表数据,支持下拉刷新和上拉加载更多 2.引入

import { CustomList } from "silk_ui"

3.使用

CustomList({
   dataSource: this.list,
   finished: this.finished,
   onLoad: () => this.load(),
   onRefresh: () => this.refresh(),
   children: (item: object) => this.children(item)
})
  1. API
参数说明类型默认值
dataSource数据源object[][]
@Prop finished是否加载了所有booleanfalse
onLoad加载数据源方法 触底自动执行() => Promise<void>-
onRefresh刷新方法() => Promise<void>-
@BuilderParam children列表项组件Builder-
keyGenera键的生成器函数(item: object, index: number) => string(item: object, index: number) => JSON.stringify(item)
divider分割线样式ListDivider | nullfalse
space列表项间隔number | string16
paddingLr列表两侧留白number | string12
background_color背景色ResourceColor'#ffffff'
offsetValue列表底部偏移量 触发加载number80
openRefresh是否开启下拉刷新booleantrue
openAutoLoad是否开启自动加载booleantrue

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

点击领取→【纯血版鸿蒙全套最新学习资料】(安全链接,放心点击希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、(南向驱动、嵌入式等)鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。


 鸿蒙(HarmonyOS NEXT)最新学习路线

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

HarmonyOS Next 最新全套视频教程

 《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

大厂面试必问面试题

鸿蒙南向开发技术

鸿蒙APP开发必备

鸿蒙生态应用开发白皮书V2.0PDF


请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,才能在这个变革的时代中立于不败之地。 

                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值