HarmonyOS SideBarContainer 转场动画

SideBarContainer 组件只提供了展示和隐藏按钮属性: showControlButton ,使用这个属性是可以实现带动画的隐藏和显示,但是会按钮显示在页面上,目前需求中关闭的时候没有按钮可以点击,要实现点击侧边栏外面的区域实现关闭,目前只能通过showSideBar 属性去关闭侧边栏,但动画就没有了,现在期望能实现 改变 showSideBar 属性时,侧边栏的弹出和显示都能带上动画的效果

HarmonyOS
2025-01-09 13:57:04
561浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Excelsior_abit

可参考如下demo

@Entry
@Component
struct Index {
  @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: 1000}).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: 1 })
          .onAction((event?: GestureEvent) => {
            if (event) {
              // this.showSideBar = false
              this.cancel()
            }
          })
      )
      // .margin({ top: 50, left: 20, right: 30 })
    }
    .sideBarPosition(SideBarPosition.End)
    .showSideBar(this.showSideBar)
    .showControlButton(false)
    .sideBarWidth(150)
    .minSideBarWidth(50)
    .maxSideBarWidth(300)
    .minContentWidth(0)
    .onChange((value: boolean) => {
      console.info('status:' + value)
    })
  }
}
  • 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.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
分享
微博
QQ
微信
回复
2025-01-09 17:28:35


相关问题
如何实现动画转场效果
1784浏览 • 1回复 待解决
HarmonyOS Navigation实现Dialog转场动画
712浏览 • 1回复 待解决
HarmonyOS 无感转场动画推荐方案
846浏览 • 1回复 待解决
HarmonyOS Refresh和页面转场动画demo
673浏览 • 1回复 待解决
HarmonyOS 页面内的组件转场动画
1099浏览 • 1回复 待解决
HarmonyOS navigation导航转场动画怎么写
750浏览 • 1回复 待解决
如何全局设置页面转场动画
1226浏览 • 1回复 待解决
Tabs 出现/消失转场动画效果
1110浏览 • 1回复 待解决
HarmonyOS 复用转场动画示例3问题
750浏览 • 1回复 待解决
ArkUI转场动画可以改颜色吗?
2799浏览 • 1回复 待解决
HarmonyOS Navigation转场动画的一些思路
717浏览 • 1回复 待解决
HarmonyOS SideBarContainer使用问题
671浏览 • 1回复 待解决
转场动画,谁有好的方案吗?
1279浏览 • 1回复 待解决
请问如何去掉ability的转场动画
12046浏览 • 2回复 待解决
Navigation如何自定义立体转场动画
340浏览 • 1回复 待解决