94 Star 364 Fork 200

HarmonyOS-Cases / Cases

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.85 KB
一键复制 编辑 原始数据 按行查看 历史
jiangwensai 提交于 2024-02-29 09:28 . fix bug

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)
  2. 通过显式动画控制侧边栏的显隐,以便实现自定义动效

    animateTo({ duration: SideBarAnimationViewConstants.SIDEBAR_ANIMATION_DURATION }, () => {
        this.isShowSideBar = !this.isShowSideBar;
    })

高性能知识点

不涉及

工程结构&模块类型

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

模块依赖

  1. 路由模块:供entry模块实现路由导航
  2. utils模块:功能介绍

参考资料

  1. SideBarContainer
  2. 显式动画
  3. 计算特性
JavaScript
1
https://gitee.com/harmonyos-cases/cases.git
git@gitee.com:harmonyos-cases/cases.git
harmonyos-cases
cases
Cases
master

搜索帮助