介绍
在2in1或平板上,群聊侧边栏是一种较为常用的功能,虽然HarmonyOS已经具备了基本的动效,但是部分情况下开发者可能有定制侧边栏动效的需求,本例主要介绍了如何基于显式动画实现侧边栏的淡入淡出动效。
效果图预览
使用说明:
- 点击右侧三角按钮进行侧边栏的显示与隐藏
- 当前动效过渡时间较短,如果要更清晰地观察动画效果,可以将 动效的持续时间SIDEBAR_ANIMATION_DURATION
更改长一点,如1000 - 注意,由于手机屏幕边缘较难响应事件,请用2in1或或平板进行测试
实现思路
- 由于SideBarContainer的controlButton无法实现对其动效的自定义,所以需要禁用默认的button,通过自定义的Button来控制SideBar的显隐,并为SideBar添加了透明度的变化动效
SideBarContainer(this.sidebarType) {
SideBarView()
.opacity(this.isShowSideBar ? SideBarAnimationViewConstants.SIDEBAR_OPACITY_SHOW : SideBarAnimationViewConstants.SIDEBAR_OPACITY_HIDDEN)
SideBarContentView({ isShowSideBar: this.isShowSideBar })
}
.showSideBar(this.isShowSideBar)
.showControlButton(SideBarAnimationViewConstants.SIDEBAR_IS_SHOW_BUTTON)
.autoHide(SideBarAnimationViewConstants.SIDEBAR_IS_AUTO_HIDE)
- 通过显式动画控制侧边栏的显隐,以便实现自定义动效
animateTo({ duration: SideBarAnimationViewConstants.SIDEBAR_ANIMATION_DURATION }, () => {
this.isShowSideBar = !this.isShowSideBar;
})
高性能知识点
不涉及
工程结构&模块类型
sidebaranimation // har
|---constants // 常量定义
|---view
| |---SideBarAnimationView.ets // 入口组件
| |---SideBarContentView.ets // 内容区组件
| |---SideBarView.ets // 侧边栏组件
写在最后
如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新学习知识点,请移步前往小编:
https://gitcode.com/HarmonyOS_MN