uniapp 嵌入鸿蒙原生组件 具体步骤

关于怎么使用uniapp 嵌入鸿蒙原生组件

HBuilder X 版本 4.64

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

app-harmony文件下新建 index.uts button.ets

在这里插入图片描述

button.ets里面复制uniapp 官方提供的 示例代码

https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html

button.ets

import { NativeEmbedBuilderOptions, defineNativeEmbed } from "@dcloudio/uni-app-runtime"

interface ButtonBuilderOptions extends NativeEmbedBuilderOptions {
  label: string
}

interface ButtonClickEventDetail {
  text: string
}


@Component
struct ButtonComponent {
  @Prop label: string
  onButtonClick?: Function

  build() {
    Button(this.label)
      .width('100%')
      .height('100%')
      .onClick(() => {
        if (this.onButtonClick) {
          const detail = {
            text: 'test'
          } as ButtonClickEventDetail
          this.onButtonClick({
            detail
          })
        }
      })
  }
}

@Builder
function ButtonBuilder(options: ButtonBuilderOptions) {
  ButtonComponent({
    label: options.label,
    onButtonClick: options?.on?.get('click')
  })
    .width(options.width)
    .height(options.height)
}

defineNativeEmbed('button', {
  builder: ButtonBuilder
})

index.vue

<template>
	<embed class="native-button" tag="button" :options="options" @click="onClick"></embed>
</template>

<script setup lang="ts">
import "@/uni_modules/native-harmony-button";
import { ref } from 'vue';
const options = ref({ label: 'hello' })
const onClick = (e) => {
	console.log(e)
}
</script>
<style lang="scss" scoped>
 .native-button {
    display: block;
    width: 200px;
    height: 50px;
    margin: 10px auto;
}
</style>

效果图

在这里插入图片描述

完结

效果没出来的可以在评论区提问

### 通过原生组件实现视频播放功能 在 UniApp 中,可以通过使用内置的 `video` 组件实现视频播放功能。该组件支持常见的视频格式,并可在多个平台上运行,适用于点播和部分直播场景。 #### 基本用法 在页面中定义一个 `video` 标签,并为其绑定必要的属性,如视频地址、自动播放、控制条等: ```html <template> <view> <video :src="videoUrl" :autoplay="true" :controls="true" @error="onVideoError" ></video> </view> </template> <script> export default { data() { return { videoUrl: 'https://your-domain.com/video.mp4' }; }, methods: { onVideoError(e) { console.error('视频播放出错', e.detail.errMsg); } } }; </script> ``` 上述代码展示了如何在 UniApp 页面中嵌入一个基础视频播放器,并设置自动播放与控制条显示。同时绑定了错误事件监听,用于捕获播放异常情况[^1]。 #### 自定义封装为模板组件 为了提高复用性,可以将视频播放组件封装为独立的 Vue 模板文件,例如 `video-player.vue`。这样可以在多个页面中统一调用,减少重复代码。 ```html <!-- template/video-player.vue --> <template> <view class="video-container"> <video :src="src" :autoplay="autoplay" :controls="controls" @error="$emit('error', $event)" ></video> </view> </template> <script> export default { props: { src: { type: String, required: true }, autoplay: { type: Boolean, default: false }, controls: { type: Boolean, default: true } } }; </script> ``` 之后,在其他页面中引入并使用该组件: ```html <template> <view> <video-player src="https://your-domain.com/video.mp4" :autoplay="true" @error="onVideoError" /> </view> </template> <script> import VideoPlayer from '@/template/video-player.vue'; export default { components: { VideoPlayer }, methods: { onVideoError(e) { // 处理播放错误 } } }; </script> ``` #### 原生插件扩展播放能力 对于更复杂的播放需求,如支持 HLS 流媒体、小窗播放或多清晰度切换等功能,可使用原生插件增强播放能力。例如 YL 视频播放器是一款专为安卓平台设计的高性能原生插件,支持 ExoPlayer、IJKPlayer 和 Android 原生播放引擎三核切换,适用于在线教育、短视频等多种场景[^2]。 通过调用原生插件接口,开发者可以获得更低延迟、更高兼容性的播放体验,尤其适合对性能要求较高的应用。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vue1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值