纯血鸿蒙APP实战开发——SideBarContainer侧边栏淡入淡出动效实现案例

介绍

在2in1或平板上,群聊侧边栏是一种较为常用的功能,虽然HarmonyOS已经具备了基本的动效,但是部分情况下开发者可能有定制侧边栏动效的需求,本例主要介绍了如何基于显式动画实现侧边栏的淡入淡出动效。

效果图预览

使用说明

  1. 点击右侧三角按钮进行侧边栏的显示与隐藏
  2. 当前动效过渡时间较短,如果要更清晰地观察动画效果,可以将动效的持续时间SIDEBAR_ANIMATION_DURATION
    更改长一点,如1000
  3. 注意,由于手机屏幕边缘较难响应事件,请用2in1或或平板进行测试

实现思路

  1. 由于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)
  1. 通过显式动画控制侧边栏的显隐,以便实现自定义动效
   animateTo({ duration: SideBarAnimationViewConstants.SIDEBAR_ANIMATION_DURATION }, () => {
       this.isShowSideBar = !this.isShowSideBar;
   })

高性能知识点

不涉及

工程结构&模块类型

sidebaranimation                                // har
|---constants                                   // 常量定义
|---view
|   |---SideBarAnimationView.ets                // 入口组件 
|   |---SideBarContentView.ets                  // 内容区组件
|   |---SideBarView.ets                         // 侧边栏组件

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习知识点,请移步前往小编:https://gitee.com/MNxiaona/733GH/blob/master/jianshu
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容