HarmonyOS 点击头像滑出半边栏的效果,在HarmonyOS中如何实现一样的效果?

这种点击头像滑出半边栏的效果,在HarmonyOS中如何实现一样的效果?如果可以实现,麻烦给出具体的示例demo

HarmonyOS 点击头像滑出半边栏的效果,在HarmonyOS中如何实现一样的效果? -鸿蒙开发者社区

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

可以参考下面的文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/typical-layout-scenario-V5#%E4%BE%A7%E8%BE%B9%E6%A0%8F

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-sidebarcontainer-V5

demo:

@Entry
@Component
struct IndexSwiper {
  @State arr: number[] = [1, 2, 3]
  @State current: number = 1
  @State showSideBar: boolean = false

  @State showFlag: Visibility = Visibility.Visible;

  // 延迟关闭弹窗,让自定义的出场动画显示
  cancel(){
    this.showFlag=Visibility.Hidden
    setTimeout(()=>{
      this.showSideBar = !this.showSideBar
    }, 1000)
  }

  build() {
    SideBarContainer(SideBarContainerType.Overlay) {
      Column() {
        ForEach(this.arr, (item: number) => {
          Column({ space: 5 }) {
            Text("Index0" + item)
              .fontSize(25)
              .fontColor(this.current === item ? '#0A59F7' : '#999')
              .fontFamily('source-sans-pro,cursive,sans-serif')
          }
          .onClick(() => {
            this.current = item
          })
        }, (item: string) => item)
      }
      .visibility(this.showFlag)
      .transition(TransitionEffect.OPACITY.animation({duration: 500}).combine(TransitionEffect.translate({x: -100})))
      .width('100%')
      .justifyContent(FlexAlign.SpaceEvenly)
      .backgroundColor(Color.Pink)

      Column() {
        Button('打开侧边栏').onClick(() => {
          this.showFlag=Visibility.Visible
          this.showSideBar = true
        })

        Button('关闭侧边栏').onClick(() => {
          this.cancel()
        })
      }
      .backgroundColor(Color.Green)
      .gesture(
        TapGesture({ count: 2 })
          .onAction((event?: GestureEvent) => {
            if (event) {
              // this.showSideBar = false
              this.cancel()
            }
          })
      )
      // .margin({ top: 50, left: 20, right: 30 })
    }
    .sideBarPosition(SideBarPosition.Start)
    .showSideBar(this.showSideBar)
    .showControlButton(false)
    .sideBarWidth(150)
    .minSideBarWidth(50)
    .maxSideBarWidth(300)
    .minContentWidth(0)
    .onChange((value: boolean) => {
      console.info('status:' + value)
    })
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
如何实现按钮点击效果
637浏览 • 2回复 待解决
ArkUl如何实现动画效果?
198浏览 • 0回复 待解决
如何去掉Toggle类控件点击效果
552浏览 • 1回复 待解决
HarmonyOS 如何实现柔滑边缘效果
157浏览 • 1回复 待解决
HarmonyOS 如何实现个转圈效果
1000浏览 • 2回复 待解决