HarmonyOS 双向滑动Slider组件

开发中需要实现双向滑动Slider组件,是否有现成的实现方案

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

请参考以下规避方案:

@Entry
@Component
struct SliderPage {
  @State message: string = 'Hello World';


  private blockSize: number = 16;
  @State offsetX1: number = 0
  @State offsetX2: number = 0
  @State positionX1: number = 0
  @State positionX2: number = 300
  @State positionY: number = 0
  build() {
    Column() {
      Stack(){
        Row(){}.justifyContent(FlexAlign.Start).width(300).height(15).backgroundColor(Color.Grey)
        Stack(){}.width(this.blockSize).height(this.blockSize).backgroundColor(Color.Red).position({x:this.positionX1,y:this.positionY})
        .gesture(
          PanGesture()
            .onActionStart((event: GestureEvent) => {
              console.info('Pan start')
            })
            .onActionUpdate((event: GestureEvent) => {
              if (event) {
                if(this.offsetX1 + event.offsetX > this.positionX2 || this.offsetX1 + event.offsetX <= 0) {
                  return;
                } else {
                  this.positionX1 = this.offsetX1 + event.offsetX
                }
              }
            })
            .onActionEnd(() => {
              this.offsetX1 = this.positionX1
              console.info('Pan end')
            })
        )
        Stack().width(this.blockSize).height(this.blockSize).backgroundColor(Color.Blue).position({x:this.positionX2,y:this.positionY})
          .gesture(
            PanGesture()
              .onActionStart((event: GestureEvent) => {
                console.info('Pan start')
              })
              .onActionUpdate((event: GestureEvent) => {
                if (event) {
                  if(this.offsetX2 + event.offsetX < this.positionX1 || this.offsetX2 + event.offsetX >= 300) {
                    return;
                  } else {
                    this.positionX2 = this.offsetX2 + event.offsetX
                  }
                }
              })
              .onActionEnd(() => {
                this.offsetX2 = this.positionX2
                console.info('Pan end')
              })
          )
      }


    }
    .height('100%')
    .width('100%')
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS Slider滑动问题
396浏览 • 1回复 待解决
如何监听Slider滑动结束
457浏览 • 1回复 待解决
HarmonyOS Slider滑动自定义tips
32浏览 • 1回复 待解决
如何实现纵向且逆向滑动Slider
452浏览 • 1回复 待解决
HarmonyOS Slider组件气泡提示显示不全
42浏览 • 1回复 待解决
HarmonyOS Slider showTips
310浏览 • 1回复 待解决
组件与子组件使用@Link双向同步
1059浏览 • 1回复 待解决
HarmonyOS Slider使用问题
43浏览 • 1回复 待解决
HarmonyOS $$双向绑定问题
318浏览 • 1回复 待解决
HarmonyOS Slider UI展示问题
474浏览 • 1回复 待解决
HarmonyOS 自定义Slider
37浏览 • 1回复 待解决
HarmonyOS 滑动组件问题
39浏览 • 1回复 待解决
HarmonyOS Scroll组件无法滑动
474浏览 • 1回复 待解决
HarmonyOS Tabs组件嵌套滑动
438浏览 • 1回复 待解决
HarmonyOS 监听List组件滑动
60浏览 • 1回复 待解决
HarmonyOS 父子组件滑动冲突
44浏览 • 1回复 待解决
Tabs组件嵌套滑动组件
1469浏览 • 1回复 待解决