HarmonyOS 自定义滑动组件

静态效果如截图,查看了基础组件中的slider单也只能支持单block无法像图中所示有两个block进行区间选择。请问一下是否有可替代的方案呢?

HarmonyOS 自定义滑动组件 -鸿蒙开发者社区

HarmonyOS
2025-01-09 14:00:40
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Excelsior_abit

目前没有双向的组件,需要自定义才能实现,可以试下参考此demo:

https://gitee.com/harmonyos-cases/cases/blob/master/CommonAppDevelopment/feature/dragtoswitchpictures/README.md

手势实现滑动效果的方式

拖动手势文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-gestures-pangesture-V5

Column(){
  Stack(){
    Image($r('app.media.background'))
      .width('100%')
      .height('20vp')
    Image($r('app.media.ic_left'))
      .width('30vp')
      .height('30vp')
      .translate({ x: this.offsetX, y: this.offsetY, z: 0 }) // 以组件左上角为坐标原点进行移动
        // 左右拖动触发该手势事件
      .gesture(
        PanGesture(this.panOption)
          .onActionStart((event: GestureEvent) => {
            console.info('Pan start')
          })
          .onActionUpdate((event: GestureEvent) => {
            if (event) {
              if(this.positionX + event.offsetX > this.positionX1) {
                return;
              }
              this.offsetX = this.positionX + event.offsetX
            }
          })
          .onActionEnd(() => {
            this.positionX = this.offsetX
            console.info('Pan end')
          })
      )

    Image($r('app.media.ic_right'))
      .width('30vp')
      .height('30vp')
      .translate({ x: this.offsetX1, y: this.offsetY, z: 0 }) // 以组件左上角为坐标原点进行移动
        // 左右拖动触发该手势事件
      .gesture(
        PanGesture(this.panOption1)
          .onActionStart((event: GestureEvent) => {
            console.info('Pan start')
          })
          .onActionUpdate((event: GestureEvent) => {
            if (event) {
              if(this.positionX1 + event.offsetX < this.positionX) {
                return;
              }
              this.offsetX1 = this.positionX1 + event.offsetX
            }
          })
          .onActionEnd(() => {
            this.positionX1 = this.offsetX1
            console.info('Pan end')
          })
      )
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
分享
微博
QQ
微信
回复
2025-01-09 17:38:14


相关问题
HarmonyOS 自定义滑动
638浏览 • 1回复 待解决
HarmonyOS Slider滑动自定义tips
900浏览 • 1回复 待解决
HarmonyOS 定义自定义组件
1031浏览 • 1回复 待解决
HarmonyOS 自定义组件问题
1346浏览 • 1回复 待解决
自定义日期滑动选择器弹窗
1067浏览 • 1回复 待解决
自定义组件嵌套子组件
10432浏览 • 3回复 待解决
HarmonyOS 如何自定义布局组件
719浏览 • 1回复 待解决
HarmonyOS ArkUI加载自定义组件
1098浏览 • 1回复 待解决
HarmonyOS 如何自定义toast组件
878浏览 • 1回复 待解决
HarmonyOS 自定义tabbar组件开发
809浏览 • 1回复 待解决
HarmonyOS 自定义组件的使用
768浏览 • 1回复 待解决
HarmonyOS如何手动重置自定义组件
1114浏览 • 1回复 待解决
HarmonyOS 键盘顶部添加自定义组件
941浏览 • 1回复 待解决
HarmonyOS UI组件自定义点击范围
1167浏览 • 1回复 待解决
HarmonyOS 自定义组件如何获取高度?
1021浏览 • 1回复 待解决