HarmonyOS SideBarContainer通过showSideBar来自定义控制展开收起,没有动画效果?

需要类似controlButton控制时的那种动画效果。使用自定义按钮来控制展开收起,同时点击屏幕其他区域自动收起。目前好像只能使用showSideBar来控制。但是没有动画效果,如果想实现动画展开收起,需要怎么操作?

HarmonyOS
2024-09-29 12:31:38
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

参考demo:

@Entry  
@Component  
struct SideBarContainerDemo {  
  @State arr: number[] = [1, 2, 3]  
  @State current: number = 1  
  @State showSideBar: boolean = false  
  @State showFlag: Visibility = Visibility.Hidden;  
  // 延迟关闭侧边栏,让自定义的出场动画显示  
  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: 2 })  
          .onAction((event?: GestureEvent) => {  
            if (event) {  
              this.cancel()  
            }  
          })  
      )  
    }  
    .sideBarPosition(SideBarPosition.End)  
    .showSideBar(this.showSideBar)  
    .showControlButton(false)  
    .sideBarWidth(150)  
    .minSideBarWidth(50)  
    .maxSideBarWidth(300)  
    .minContentWidth(0)  
    .onChange((value: boolean) => {  
      console.info('status:' + value)  
    })  
  }  
}
分享
微博
QQ
微信
回复
2024-09-29 18:18:14
相关问题
自定义弹窗自定义转场动画
1154浏览 • 1回复 待解决
CustomDialog自定义动画
419浏览 • 1回复 待解决
HarmonyOS video空间自定义控制
307浏览 • 1回复 待解决
HarmonyOS CoverFlow效果自定义组件实现
285浏览 • 1回复 待解决
HarmonyOS .scale没有动画效果
45浏览 • 1回复 待解决
如何实现文本展开收起功能
876浏览 • 1回复 待解决
CustomDialog不支持自定义动画
439浏览 • 2回复 待解决
refresh期望能够自定义loading动画
1003浏览 • 1回复 待解决
如何实现自定义应用入场动画
788浏览 • 1回复 待解决