news 2026/6/26 21:20:44

ArkUI(视频/按钮)组件介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ArkUI(视频/按钮)组件介绍

Video组件用于播放视频文件并控制其播放状态,常用于短视频和应用内部视频的列表页面。当视频完整出现时会自动播放,用户点击视频区域则会暂停播放,同时显示播放进度条,通过拖动播放进度条指定视频播放到具体位置。具体用法请参考Video。

创建视频组件

Video通过调用接口来创建,接口调用形式如下:

Video(value: VideoOptions)

加载视频资源

Video组件支持加载本地视频和网络视频。具体的数据源配置请参考VideoOptions对象说明。

加载本地视频

  • 普通本地视频。

    加载本地视频时,需在工程资源的rawfile目录中放置视频文件,如下图所示。

    再使用资源访问符$rawfile()引用视频资源。

    1. // xxx.ets
    2. // ...
    3. @Component
    4. export struct LocalVideo {
    5. private controller: VideoController = new VideoController();
    6. // $r('app.media.preview')需要替换为开发者所需的图像资源文件
    7. private previewUris: Resource = $r('app.media.preview');
    8. // $rawfile('videoTest.mp4')需要替换为开发者所需的影像资源文件
    9. private innerResource: Resource = $rawfile('videoTest.mp4');
    10. build() {
    11. Column() {
    12. Video({
    13. src: this.innerResource, // 设置视频源
    14. previewUri: this.previewUris, // 设置预览图
    15. controller: this.controller // 设置视频控制器,可以控制视频的播放状态
    16. })
    17. }
    18. }
    19. }

    LocalVideo.ets

  • Data Ability提供的视频路径带有dataability://前缀,使用时确保对应视频资源存在。

    1. // xxx.ets
    2. // ···
    3. @Component
    4. export struct LocalVideoTwo {
    5. private controller: VideoController = new VideoController();
    6. private previewUris: Resource = $r('app.media.preview');
    7. private videoSrc: string = 'dataability://device_id/com.domainname.dataability.videodata/video/10';
    8. build() {
    9. Column() {
    10. Video({
    11. src: this.videoSrc,
    12. previewUri: this.previewUris,
    13. controller: this.controller
    14. })
    15. }
    16. }
    17. }

    DataAbility.ets

Button是按钮组件,通常用于响应用户的点击操作,其类型包括胶囊按钮、圆形按钮、普通按钮、圆角矩形按钮。Button作为容器使用时可以通过添加子组件实现包含文字、图片等元素的按钮。具体用法请参考Button。

创建按钮

Button通过调用接口来创建,接口调用有以下两种形式:

  • 通过label和ButtonOptions创建不包含子组件的按钮。以ButtonOptions中的type和stateEffect为例。

    1. Button(label?: ResourceStr, options?: { type?: ButtonType, stateEffect?: boolean })

    其中,label用来设置按钮文字,type用于设置Button类型,stateEffect属性设置Button是否开启点击效果。

    1. Button('Ok', { type: ButtonType.Normal, stateEffect: true })
    2. .borderRadius(8)
    3. .backgroundColor(0x317aff)
    4. .width(90)
    5. .height(40)

    CreateButton.ets

  • 通过ButtonOptions创建包含子组件的按钮。以ButtonOptions中的type和stateEffect为例。

    1. Button(options?: {type?: ButtonType, stateEffect?: boolean})

    只支持包含一个子组件,子组件可以是基础组件或者容器组件。

    1. Button({ type: ButtonType.Normal, stateEffect: true }) {
    2. Row() {
    3. // 请将$r('app.media.loading')替换为实际资源文件
    4. Image($r('app.media.loading')).width(20).height(40).margin({ left: 12 })
    5. Text('loading').fontSize(12).fontColor(0xffffff).margin({ left: 5, right: 12 })
    6. }.alignItems(VerticalAlign.Center)
    7. }.borderRadius(8).backgroundColor(0x317aff).width(90).height(40)

    CreateButton.ets

设置按钮类型

Button有四种可选类型,分别为胶囊类型(Capsule)、圆形按钮(Circle)、普通按钮(Normal)和圆角矩形按钮(ROUNDED_RECTANGLE),通过type进行设置。

  • 胶囊按钮(默认类型)。

    此类型按钮的圆角自动设置为高度的一半,不支持通过borderRadius属性重新设置圆角。

    1. Button('Disable', { type: ButtonType.Capsule, stateEffect: false })
    2. .backgroundColor(0x317aff)
    3. .width(90)
    4. .height(40)

    SetButtonType.ets

  • 圆形按钮。

    此类型按钮为圆形,不支持通过borderRadius属性重新设置圆角。

    1. Button('Circle', { type: ButtonType.Circle, stateEffect: false })
    2. .backgroundColor(0x317aff)
    3. .width(90)
    4. .height(90)

    SetButtonType.ets

  • 普通按钮。

    此类型的按钮默认圆角为0,支持通过borderRadius属性重新设置圆角。

    1. Button('Ok', { type: ButtonType.Normal, stateEffect: true })
    2. .borderRadius(8)
    3. .backgroundColor(0x317aff)
    4. .width(90)
    5. .height(40)

    SetButtonType.ets

  • 圆角矩形按钮。

    当controlSize为NORMAL时,默认圆角大小为20vp,controlSize为SMALL时,圆角大小为14vp,支持通过borderRadius属性重新设置圆角。

    1. Button('Disable', { type: ButtonType.ROUNDED_RECTANGLE, stateEffect: true })
    2. .backgroundColor(0x317aff)
    3. .width(90)
    4. .height(40)

    SetButtonType.ets

自定义样式

  • 设置边框弧度。

    使用通用属性来自定义按钮样式。例如通过borderRadius属性设置按钮的边框弧度。

    1. Button('circle border', { type: ButtonType.Normal })
    2. .borderRadius(20)
    3. .height(40)

    ButtonCustomStyle.ets

  • 设置文本样式。

    通过添加文本样式设置按钮文本的展示样式。

    1. Button('font style', { type: ButtonType.Normal })
    2. .fontSize(20)
    3. .fontColor(Color.Pink)
    4. .fontWeight(800)

    ButtonCustomStyle.ets

  • 设置背景颜色。

    添加backgroundColor属性设置按钮的背景颜色。

    1. Button('background color').backgroundColor(0xF55A42)

    ButtonCustomStyle.ets

添加事件

Button组件通常用于触发某些操作,可以绑定onClick事件来响应点击操作后的自定义行为。

  1. Button('Ok', { type: ButtonType.Normal, stateEffect: true })
  2. .onClick(()=>{
  3. hilog.info(DOMAIN, 'testTag', 'Button onClick');
  4. }).margin(10)

以上内容均参考于视频播放 (Video)-媒体展示-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

按钮 (Button)-按钮与选择-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

ButtonCaseLogin.ets

实战演示

video组件(需使用模拟器才能正常运行)

button组件

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 21:12:17

技术深度:Tickets抢票软件如何通过Rust零成本抽象突破高并发限制

技术深度:Tickets抢票软件如何通过Rust零成本抽象突破高并发限制 【免费下载链接】tickets 大麦、大麦网 演唱会抢票软件,一个基于 tauri rust vue 调用接口的抢票软件。 项目地址: https://gitcode.com/gh_mirrors/ti/tickets 在高并发票务抢购…

作者头像 李华
网站建设 2026/6/26 21:08:33

HarmonyOS7 碰一碰为什么顺手?跨设备内容流转实战

文章目录前言碰一碰到底干了什么普通分享 vs 精准分享在智能助手里接入精准分享配置权限发起分享平板端接收与窗口识别UI 层响应插入踩坑记录一些感想前言 上篇咱们聊了分布式数据同步,有朋友问:用户想主动把内容"甩"到另一台设备上怎么办&am…

作者头像 李华
网站建设 2026/6/26 21:07:49

【C/C++】用 C 语言手写 DNS 查询:理解 UDP 和协议报文

目录用 C 语言手写 DNS 查询:理解 UDP 和协议报文用 C 语言手写 DNS 查询:理解 UDP 和协议报文 学习代码:dns/dns.c DNS 项目让我第一次比较具体地感受到:网络编程不只是 socket、sendto、recvfrom,更重要的是理解协议…

作者头像 李华
网站建设 2026/6/26 21:07:26

互联网大厂 Java 求职面试:技术与业务的博弈

互联网大厂 Java 求职面试:技术与业务的博弈 在这次面试中,面试官与燕双非展开了一场关于Java技术栈与业务场景的深度对话。第一轮提问 面试官:燕双非,首先请你谈谈 Java SE 8 和 11 的主要区别是什么? 燕双非&#xf…

作者头像 李华
网站建设 2026/6/26 20:58:30

基于CAMx的空气质量模拟及污染来源解析技术与案例分析

CAMx模型是一个基于大气化学,针对臭氧、颗粒物和雾霾天气过程的大气污染物计算模型。 一:CAMx模式框架、应用案例分析及本地案例配置说明 1.CAMx模式框架 2.CAMx应用案例分析 3. 多重嵌套模拟区域配置说明及方法 4. 基于SMOK…

作者头像 李华