HarmonyOS 请问ArkTS如何实现视频预览功能?

APP首页有很多视频预览功能,请问这在ArkTS里要如何实现?是使用Video组件吗?能否给我一个简短的小demo代码作为参考

HarmonyOS
2024-10-21 12:03:58
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

开发者通过用Scroll和video写了以下案例,希望符合您的需求:

import display from '@ohos.display';  
  
/**  
 * inspector对象  
 */  
interface inspectorObj{  
  $type: string  // 组件的tagName  
  $ID: string    //  
  $rect: string  // 位置信息 [36.00, 36.00],[1044.00,996.00]  数组的第一个值是组件左上角的坐标,第二个值是组件右下角的坐标  
  $debugLine: string  
  $attrs: string  
}  
  
@Entry  
@Component  
struct ScrollVideo {  
  controller: VideoController = new VideoController();  
  screenHeight: number = 0;  
  
  aboutToAppear(): void {  
    // 获取屏幕属性  
    display.getAllDisplays().then((data) => {  
      const screenDisplays: Array<display.Display> = data;  
      this.screenHeight = screenDisplays[0].height;  
      console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));  
      console.info(`Succeeded in obtaining all the display objects  ${this.screenHeight}`)  
    }).catch((err: Error) => {  
      console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));  
    });  
  }  
  
  build() {  
    Scroll(){  
      Column(){  
        Row().width('100%').height('110%').backgroundColor(Color.Blue)  
        Video({  
          src: $rawfile('videoTest.mp4'),  
          controller: this.controller  
        }).width('100%').height(400).id('videoCom')  
        Row().width('100%').height('120%').backgroundColor(Color.Blue)  
      }  
    }  
    .width('100%').height('100%')  
    .onScrollStop(()=>{ // 滚动结束后  
      const videoInspector = getInspectorByKey('videoCom'); // video位置信息  
      let obj: inspectorObj = JSON.parse(videoInspector);  
      const rectInfo: object = JSON.parse(`[${obj.$rect}]`);  
      const top: number = JSON.parse(`[${rectInfo[0]}]`)[1]; // 距离屏幕顶部  
      const bottom: number = JSON.parse(`[${rectInfo[1]}]`)[1]; // 距离屏幕底部  
      if(top >= 0 && bottom <= this.screenHeight) { // 在屏幕里  
        this.controller.start();  
      } else {  
        this.controller.pause();  
      }  
      console.log(`rectInfo    ${rectInfo}`)  
    })  
  }  
}
分享
微博
QQ
微信
回复
2024-10-21 16:49:53
相关问题
HarmonyOS 请问ArkTS如何实现倒计时功能
29210浏览 • 8回复 待解决
camera_lite预览功能如何实现
2268浏览 • 0回复 待解决
HarmonyOS 请问ArkTS如何实现RSA加密?
365浏览 • 1回复 待解决
如何实现双路预览+录制功能
920浏览 • 1回复 待解决
HarmonyOS ArkTS如何实现锚点跳转功能
202浏览 • 1回复 待解决
arkts 护眼模式功能实现
233浏览 • 0回复 待解决
HarmonyOS 请问ArkTS如何创建全局文件?
382浏览 • 1回复 待解决
HarmonyOS 分享功能如何实现
84浏览 • 1回复 待解决
arkTS如何实现电子书阅读器的功能?
1750浏览 • 1回复 待解决
ArkTs怎么实现扫一扫功能
4594浏览 • 1回复 待解决
HarmonyOS如何实现头像选择功能
367浏览 • 1回复 待解决
使用预览实现多端预览
855浏览 • 1回复 待解决
如何实现pdf文件的预览
359浏览 • 1回复 待解决
HarmonyOS如何实现粘贴板功能
242浏览 • 1回复 待解决
HarmonyOS 如何实现手势密码功能
367浏览 • 1回复 待解决
如何实现视频滤镜效果
1966浏览 • 1回复 待解决
鸿蒙这个预览功能 总是报错
9128浏览 • 5回复 待解决
请问视频流支持哪些格式
443浏览 • 1回复 待解决
如何实现拍照预览onPreviewFrame回调
552浏览 • 1回复 待解决
HarmonyOS 如何实现滑动验证码功能
417浏览 • 1回复 待解决
定时提醒功能如何实现?
4844浏览 • 1回复 待解决