精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何為組件的不同觸摸區域添加不同交互動作(通過Event坐標實現)

系統 OpenHarmony
當前OpenHarmony提供的熱區設置屬性(ResponseRegion)只能在不同的觸摸熱區中觸發相同的事件,那么如何實現不同熱區不同事件呢,本例即以上述視頻播放場景為例進行說明。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

場景說明

應用開發中經常需要給同一個組件劃分不同的觸摸熱區,并且不同熱區觸發的操作也不同,比如閱讀應用通常包含左右兩個觸摸熱區,用戶觸摸左側觸發向后翻頁,觸摸右側觸發向前翻頁;同樣的,視頻應用中,長按視頻播放器的左側觸發快退播放,長按右側觸發快進播放等等。
當前OpenHarmony提供的熱區設置屬性(responseRegion)只能在不同的觸摸熱區中觸發相同的事件,那么如何實現不同熱區不同事件呢,本例即以上述視頻播放場景為例進行說明。

效果呈現

效果說明:開始時視頻以正常速度播放,播放到5秒時,長按播放器右側觸發快進播放,播放到14秒時長按播放器左側觸發快退播放。

環境要求

本例基于以下環境開發,開發者也可以基于其他適配的版本進行開發:

  • IDE: DevEco Studio 4.0 Release
  • SDK: Ohos_sdk_public 4.0.10.13 (API Version 10 Release)

實現思路

幾乎組件的所有觸摸事件都會返回event,通過返回的event可以獲取到觸摸點的坐標位置,那么就可以根據坐標位置為不同的組件區域添加不同的交互動作。如圖:假設有一個長度為200vp的組件,我們希望點擊組件的左側時觸發事件A,點擊組件的右側時觸發事件B,那么就可以通過觸摸點的坐標來判斷,當觸摸點的x坐標<=100時,觸發事件A,反之觸發事件B。

本例即采用上述思路為Video組件的左右兩側添加不同的交互動作。從而實現長按視頻播放器的左側觸發后退播放,長按右側觸發快進播放。

開發步驟

本例詳細開發步驟如下,開發步驟中僅展示相關步驟代碼,全量代碼請參考完整代碼章節的內容。

通過Video組件創建視頻播放器,并添加觸摸手勢,通過觸摸控制視頻的播放、暫停。

@Component
export struct VideoPlayer{
  //...
  private isPlaying:boolean = true
  private updateTime: number
  private videoController:VideoController = new VideoController()

  build(){
    // 添加視頻組件
    Video({src:this.videoSrc, controller:this.videoController, previewUri:this.videoPreviewer,currentProgressRate:this.playRate})
      //...
      // 獲取當前進度條的時間點
      .onUpdate((e)=>{
        this.updateTime = e.time
      })
      .gesture(
        // 添加觸摸手勢
        TapGesture({count:1})
          .onAction((event:GestureEvent)=>{
            if (this.isPlaying){
              // 觸摸觸發播放
              this.videoController.start()
              this.isPlaying = !this.isPlaying
            } else {
              // 再次觸摸觸發暫停
              this.videoController.pause()
              this.isPlaying =!this.isPlaying
            }
          })
      )
  }
}

為Video組件添加長按手勢,通過長按手勢觸發播放的快退和快進動作。由于觸摸手勢和長按手勢需要互斥,即一次只能觸發一種手勢,所以通過GestureGroup來實現手勢的互斥。

.gesture(
  // 通過GestureGroup的GestureMode.Exclusive參數控制手勢互斥
  GestureGroup(GestureMode.Exclusive,
    // 添加觸摸手勢
    TapGesture({count:1})
      .onAction((event:GestureEvent)=>{
        if (this.isPlaying){
          // 觸摸觸發播放
          this.videoController.start()
          this.isPlaying = !this.isPlaying
        } else {
          // 再次觸摸觸發暫停
          this.videoController.pause()
          this.isPlaying =!this.isPlaying
        }
      }),
    // 添加長按手勢
    LongPressGesture({repeat:true})
      // 長按時觸發快進或快退
      .onAction((event)=>{
        //添加快進和快退的邏輯,通過event獲取手勢坐標進行判斷。
      })
      // 長按結束后播放速度回歸正常
      .onActionEnd(()=>{
       // 添加回歸正常播放的邏輯
      })
  )
)

補充長按手勢中的業務邏輯:通過event獲取到觸摸點的x坐標:localX,當localX>=200時,說明觸摸點在組件的右側,觸發快進播放;當localX<200時,說明觸摸點在左側,觸發快退播放。當觸摸停止時,回歸正常播放速度。

// 添加長按手勢
LongPressGesture({repeat:true})
// 長按時觸發快進或快退
.onAction((event)=>{
  // 獲取到觸摸點x坐標localX,當localX>=200時,說明觸摸點在組件的右側,觸發快進播放
  if (event.fingerList[0].localX>=200){
    // 播放速度變為2倍速
    this.playRate = PlaybackSpeed.Speed_Forward_2_00_X
  }
  // 當localX<200時,說明觸摸點在左側,觸發快退播放
  if (event.fingerList[0].localX<200){
    if (this.intervalCount===0){
      // 通過進度時間減小來達到快退的目的,通過setInterval來控制后退的速度,否則會連續觸發后退,瞬間后退到播放起點
      this.seekBack = setInterval(()=>{
        this.updateTime -= 1
        this.videoController.setCurrentTime(this.updateTime)
      },500)
    }
    this.intervalCount = 1
  }
})
// 長按結束后播放速度回歸正常
.onActionEnd(()=>{
  // 播放回歸到1倍速
  this.playRate = PlaybackSpeed.Speed_Forward_1_00_X
  // 清空計時器
  clearInterval(this.seekBack)
  this.intervalCount = 0
})

完整代碼

本例完整代碼如下:

說明:

本例中使用的視頻等資源需要替換為開發者自己的資源。

@Entry
@Component
export struct VideoPlayer{
  private videoSrc:Resource = $rawfile('video_1.mp4')
  private isPlaying:boolean = true
  private updateTime: number = 0
  private videoPreviewer:Resource = $r('app.media.wandering_previewer')
  private videoController:VideoController = new VideoController()
  @State playRate:number = 1
  private seekBack:number = 0
  private intervalCount:number = 0

  build(){
    Column(){
      // 添加視頻組件
      Video({src:this.videoSrc, controller:this.videoController, previewUri:this.videoPreviewer,currentProgressRate:this.playRate})
        .width('100%')
        .height('30%')
        .backgroundColor('#fffff0')
        .controls(true)
        .objectFit(ImageFit.Contain)
        // 獲取當前進度條的時間點
        .onUpdate((e)=>{
          this.updateTime = e.time
        })
        .gesture(
          // 通過GestureGroup的GestureMode.Exclusive參數控制手勢互斥
          GestureGroup(GestureMode.Exclusive,
            // 添加觸摸手勢
            TapGesture({count:1})
              .onAction((event:GestureEvent)=>{
                if (this.isPlaying){
                  // 觸摸觸發播放
                  this.videoController.start()
                  this.isPlaying = !this.isPlaying
                } else {
                  // 再次觸摸觸發暫停
                  this.videoController.pause()
                  this.isPlaying =!this.isPlaying
                }
              }),
            // 添加長按手勢
            LongPressGesture({repeat:true})
              // 長按時觸發快進或快退
              .onAction((event)=>{
                // 獲取到觸摸點x坐標localX,當localX>=200時,說明觸摸點在組件的右側,觸發快進播放
                if (event.fingerList[0].localX>=200){
                  // 播放速度變為2倍速
                  this.playRate = PlaybackSpeed.Speed_Forward_2_00_X
                }
                // 當localX<200時,說明觸摸點在左側,觸發快退播放
                if (event.fingerList[0].localX<200){
                  if (this.intervalCount===0){
                    // 通過進度時間減小來達到快退的目的,通過setInterval來控制后退的速度,否則會連續觸發后退,瞬間后退到播放起點
                    this.seekBack = setInterval(()=>{
                      this.updateTime -= 1
                      this.videoController.setCurrentTime(this.updateTime)
                    },500)
                  }
                  this.intervalCount = 1
                }
              })
                // 長按結束后播放速度回歸正常
              .onActionEnd(()=>{
                // 播放回歸到1倍速
                this.playRate = PlaybackSpeed.Speed_Forward_1_00_X
                // 清空計時器
                clearInterval(this.seekBack)
                this.intervalCount = 0
              })
          )
        )
    }
    .height('100%')
    .width('100%')
  }
}

參考

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2014-07-18 09:54:57

vlan路?由?器

2022-10-21 09:01:33

小組件iOS

2009-12-17 16:53:13

.NET Framew

2009-11-05 09:01:41

WinForm

2024-01-08 09:27:28

自動駕駛模型

2021-01-15 11:21:33

UbuntuPHP命令

2009-07-02 13:40:45

面試

2009-02-19 15:40:00

Linux不同網段訪問

2013-08-27 12:42:42

瀏覽器

2010-11-30 11:00:10

數據中心指標

2022-03-02 07:52:13

React類組件函數式組件

2016-04-06 16:38:39

2020-03-17 14:25:34

架構運維技術

2025-04-28 08:29:04

AIMCP智能體

2011-04-19 10:53:05

SSAS

2022-04-12 07:37:08

CSS滾動視差效果前端

2012-11-27 10:14:01

.net條件編譯

2020-09-06 09:55:13

git分支命令

2021-06-11 06:10:25

Linux發行版操作系統

2010-07-01 16:12:10

UML組件圖
點贊
收藏

51CTO技術棧公眾號

亚洲综合清纯丝袜自拍| 国产成人综合在线播放| 在线亚洲欧美视频| 欧美精品色视频| 女人黄色免费在线观看| 久久综合色婷婷| 91精品国产综合久久久久久蜜臀 | 男人女人黄一级| 伊人免费在线| 99这里只有久久精品视频| 国产精品第10页| 国产亚洲精品成人| 日韩1区在线| 亚洲精品在线免费观看视频| 黑人粗进入欧美aaaaa| 欧美aaa免费| 国产欧美一二三区| 国产日韩亚洲精品| 国产又粗又猛又爽又黄视频| 国产亚洲福利| 美日韩在线视频| 美女久久久久久久久久| 一区二区三区四区视频免费观看| 在线中文字幕不卡| 给我免费播放片在线观看| 免费观看成人高潮| 国产清纯白嫩初高生在线观看91| 成人一区二区三区四区| 国产精品久久婷婷| 欧美96一区二区免费视频| 97精品国产97久久久久久春色| 一级性生活免费视频| 精品国产91久久久久久浪潮蜜月| 精品国产网站在线观看| 日韩av片免费观看| 国产91欧美| 91成人网在线| 国产日韩一区二区在线观看| 超碰在线97国产| 一区二区国产盗摄色噜噜| 亚洲一区二区三区涩| 粉嫩一区二区三区国产精品| 91麻豆福利精品推荐| 国严精品久久久久久亚洲影视| 99热这里是精品| 国产综合久久久久影院| 国产精品综合网站| 这里只有精品国产| 日韩影院精彩在线| 51ⅴ精品国产91久久久久久| 国产亚洲第一页| 激情欧美一区| 国语自产精品视频在线看| 久久久久久久久久久久国产| 欧美日本国产| 国内伊人久久久久久网站视频| 久久网免费视频| 欧美日韩mv| 久久6免费高清热精品| 久久久国产成人| 国产精品激情| 91av在线播放视频| 精品国产午夜福利| 日韩黄色一级片| 国产精品永久免费观看| 91资源在线视频| 国产精品白丝jk白祙喷水网站| 91在线观看免费| www.av在线.com| 成人永久看片免费视频天堂| 国产精品国产三级国产专区53| 亚洲免费成人在线| 99久久久久久| 日韩电影大全在线观看| av免费观看一区二区| 亚洲品质自拍视频| 精品视频在线观看一区| 在线男人天堂| 欧美性猛交一区二区三区精品| 男女视频在线看| 成人午夜888| 精品国内片67194| 特级西西人体wwwww| 国产精品欧美日韩一区| 日韩一级黄色av| 久久无码精品丰满人妻| 久久亚洲欧美| 亚洲va码欧洲m码| 午夜视频免费在线| 国产精品欧美一级免费| 免费视频爱爱太爽了| 成人香蕉视频| 91精品国产欧美一区二区成人| 亚洲精品乱码久久久久久蜜桃图片| 蜜臀91精品国产高清在线观看| 中文字幕一区二区精品| 美女福利视频在线观看| 欧美专区一区二区三区| 91久久精品一区| 五月婷婷在线播放| 亚洲欧洲精品一区二区精品久久久| 美脚丝袜脚交一区二区| 福利一区视频| 国产婷婷97碰碰久久人人蜜臀| 久久人妻无码aⅴ毛片a片app| 欧美三级网页| 国产在线a不卡| 天堂在线一二区| 亚洲特级片在线| 日本中文字幕片| 在线播放一区二区精品视频| 伊人一区二区三区久久精品| 国产稀缺真实呦乱在线| 久久99精品国产| 欧美在线激情| 激情视频网站在线播放色| 欧美一三区三区四区免费在线看 | 国产欧美精品一区二区色综合| 国产内射老熟女aaaa| 欧美日韩尤物久久| 日韩成人在线网站| 久久久久久久久久久久久久久久久| 蜜桃精品视频在线| 欧美精品久久| 九色porny自拍视频在线观看| 3atv一区二区三区| 特级西西人体高清大胆| 午夜亚洲视频| 国产一区二区三区无遮挡 | 久久不见久久见国语| 国语自产精品视频在免费| aaa一区二区三区| 国产精品久久久久精k8| 欧美日韩大尺度| 亚洲人成亚洲精品| 欧美一二三视频| 婷婷五月综合激情| 亚洲国产毛片aaaaa无费看| 亚洲 自拍 另类 欧美 丝袜| 91九色精品国产一区二区| 国产精品人成电影在线观看| 九色国产在线观看| 日韩欧美有码在线| 国产特黄级aaaaa片免| 亚洲人成久久| 国产偷久久久精品专区| 草美女在线观看| 亚洲国产天堂久久综合网| 国产一国产二国产三| 成人av网站免费观看| av免费观看国产| 色婷婷久久久| 日本一本a高清免费不卡| 日本a一级在线免费播放| 欧美视频一区二区三区…| 无码人妻aⅴ一区二区三区| 国产日韩欧美一区在线| 久久资源av| 日韩av首页| www.久久久久| 国产富婆一级全黄大片| 亚洲国产欧美在线人成| 免费成人蒂法网站| 久久大逼视频| 在线日韩av永久免费观看| 久久九九精品视频| 欧美精品18videosex性欧美| 亚洲欧洲精品视频| 欧美在线视频全部完| 亚洲精品卡一卡二| 成人小视频免费观看| 国产黄色一级网站| 久久国产综合| 成人免费看片网址| 日韩av一卡| 三级精品视频久久久久| 国产高清免费av| 精品久久久久久久久久久久久| av女人的天堂| 精品影视av免费| 丰满少妇大力进入| 日韩av二区| av成人在线电影| 亚洲成人激情社区| 久久中文久久字幕| 亚洲AV成人无码一二三区在线| 欧美在线观看一区二区| 欧美片一区二区| 久久久综合视频| www,av在线| 久久av一区| 欧美另类videos| 亚洲丝袜啪啪| 成人在线小视频| 成人欧美magnet| 欧美另类在线观看| 成人福利在线| 亚洲国产精品久久久久| 中文字幕视频在线播放| 亚洲一区二区三区视频在线| 久久亚洲无码视频| 成人黄色av网站在线| 欧美成人三级在线播放| 中文久久精品| av中文字幕av| 日韩大片在线| 精品九九九九| 天堂久久av| 国产日韩精品在线观看| 625成人欧美午夜电影| 欧美日本在线视频中文字字幕| 成人性生交大片免费看午夜| 精品国产免费视频| 97超视频在线观看| 色婷婷香蕉在线一区二区| 精品无码久久久久久久| 国产精品久久久久7777按摩| wwwwww日本| 99视频在线精品| 人妻精油按摩bd高清中文字幕| 麻豆精品视频在线| 国产精品99久久免费黑人人妻| 极品av少妇一区二区| 天天操天天干天天玩| 色呦哟—国产精品| 无码免费一区二区三区免费播放| 激情小说一区| 99视频免费观看| 国产日韩在线观看视频| 国产欧美在线视频| 日韩欧美少妇| 国产高清视频一区三区| 一个人看的www视频在线免费观看| 欧美精品激情在线观看| av毛片在线免费| 久久综合88中文色鬼| 日本中文在线| 日韩视频亚洲视频| 国产在线激情| 久久亚洲精品网站| 国产传媒在线播放| 久久躁日日躁aaaaxxxx| 精品国产白色丝袜高跟鞋| 日韩中文字幕在线观看| 欧美18hd| 欧美成人精品在线| 18+视频在线观看| 久久91亚洲精品中文字幕| 在线视频国产区| 欧美成人精品在线视频| 羞羞的视频在线观看| 色综合久综合久久综合久鬼88 | 亚洲国产精彩视频| 精品少妇一区二区三区视频免付费| 国产绿帽刺激高潮对白| 日韩三级电影网址| 国产综合在线播放| 日韩精品视频中文在线观看| 四虎在线观看| 中文字幕欧美国内| 成人video亚洲精品| 欧美激情精品久久久久久久变态| 牛牛精品视频在线| 555www成人网| 全球最大av网站久久| 91人成网站www| 超碰在线成人| 青娱乐国产91| 午夜免费一区| 97视频在线免费| 日韩和的一区二区| 在线观看免费看片| www.亚洲激情.com| 色欲AV无码精品一区二区久久 | 精品三级在线| 999精品在线观看| 偷拍亚洲色图| 日本三日本三级少妇三级66| 好看的日韩av电影| 毛葺葺老太做受视频| 狠狠色丁香九九婷婷综合五月| 国产sm在线观看| 久久久久久久久久久久久夜| 欧美肥妇bbwbbw| 欧美日韩国产页| 中文字幕永久在线观看| 欧美zozozo| 成人p站proumb入口| 欧美日本精品在线| 日本另类视频| 成人av资源| 区一区二视频| 热99这里只有精品| 久久国产成人午夜av影院| 日本少妇xxxx| 中文字幕一区二区在线播放| 日日夜夜综合网| 91精品国产综合久久福利| 神马亚洲视频| 久色乳综合思思在线视频| 韩国美女久久| 99热在线国产| 婷婷另类小说| 日韩av在线综合| 成人一区二区三区视频| 日韩精品久久久久久久的张开腿让| 婷婷中文字幕一区三区| 国产美女三级无套内谢| 亚洲午夜av久久乱码| 成人三级小说| 亚洲最大成人免费视频| 欧美特黄一级大片| 亚洲乱码中文字幕久久孕妇黑人| 国产精品一二三四区| 免费精品在线视频| 在线精品视频小说1| 亚洲色图欧美视频| 欧美国产视频日韩| 亚洲精品一区二区在线播放∴| 欧美日韩免费高清| 99综合视频| xxxxxx黄色| 亚洲成人免费观看| 精品人妻无码一区二区| 日韩有码在线观看| 主播大秀视频在线观看一区二区| 麻豆成人在线播放| 最新国产乱人伦偷精品免费网站| 激情久久综合网| 亚洲欧美偷拍卡通变态| 一级成人免费视频| 综合国产在线视频| 国产国产一区| 午夜精品福利一区二区| 日韩精品乱码免费| 人人妻人人澡人人爽| 91黄色免费看| 国产黄色在线| 国产精品网站视频| 日本精品黄色| 国产aⅴ爽av久久久久| 国产精品美女久久久久久久久久久 | 国产视频久久久久久| 亚洲一区二区三区自拍| 亚洲精品一区二区三区四区| 九九视频直播综合网| 成人动漫视频| 国产91xxx| 久久久精品2019中文字幕之3| 亚洲视频 欧美视频| 在线国产精品视频| 台湾天天综合人成在线| 免费观看黄色大片| 国产成人综合亚洲91猫咪| 国产在线一区视频| 日韩av一区二区在线观看| av高清不卡| 亚洲精品久久久久久一区二区| 捆绑变态av一区二区三区| 亚洲成人生活片| 精品奇米国产一区二区三区| 欧美亚洲日本精品| 日本一区免费观看| 精品在线播放午夜| 久久久久亚洲av无码专区| 亚洲国产精品久久| 欧美日韩免费观看视频| 自拍偷拍99| 成人午夜激情在线| 国产免费一区二区三区四区五区| 一本一本久久a久久精品牛牛影视| 日韩免费大片| 日本xxxxxxxxxx75| 国产欧美一区二区精品忘忧草| 国产亲伦免费视频播放| 97在线看免费观看视频在线观看| 国产成人一区二区三区影院| 色天使在线观看| 亚洲成人精品影院| 成人在线二区| 成人区精品一区二区| 日韩综合小视频| 欧美人妻精品一区二区三区| 亚洲精品一区二区三区不| 狂野欧美性猛交xxxx| 全黄性性激高免费视频| 国产三级精品三级在线专区| 国产黄色大片网站| 青草成人免费视频| 综合激情视频| 国产人妻大战黑人20p| 日韩一级片在线观看| 丝袜美腿诱惑一区二区三区| 久久久久久久久网| 国产日产欧美一区| 蜜臀av在线观看| 国产一区二区丝袜高跟鞋图片| 99热免费精品| 九九热最新地址| 国产午夜精品视频免费不卡69堂|