当前位置:   article > 正文

鸿蒙应用开发小例-自动隐藏的菜单_鸿蒙移动应用开发美团外卖开发版底部组件显示与隐藏

鸿蒙移动应用开发美团外卖开发版底部组件显示与隐藏

实现效果

底部菜单是很常见的页面组成部分。需要实现的效果是,在一定时间内没有操作时隐藏菜单,点击界面时呼出菜单。

自动隐藏菜单示例

实现思路

菜单组件显示在屏幕底部,通过定时器修改状态,使其offset属性y轴位置变化。

点击界面时,修改状态,使其offset属性y轴位置回到默认位置。

为菜单组件增加animation属性。

如有更好的思路,请说出你的想法,一起讨论之~

基本结构

示例页面包含,内容区域(Content)和菜单(MenuBar)。

菜单组件中包含三个按钮。

代码实现

constants下定义了一些通用的数值和颜色,请自行替换。

主要结构

外层使用了Flex组件,对于本示例无特殊意义,也可以换成其他容器组件。

通过改变contentMaskButtonToggle状态,触发菜单位置变化。注意,需要加上@State装饰器。

  1. @State contentMaskButtonToggle: boolean = false
  2. controlTimer = null
  3. build() {
  4. // ...
  5. Flex({
  6. direction: FlexDirection.Column,
  7. justifyContent: FlexAlign.SpaceBetween,
  8. alignItems: ItemAlign.Center
  9. }) {
  10. Content()
  11. MenuBar()
  12. }.onClick(() => {
  13. this.contentMaskButtonToggle = true
  14. clearTimeout(this.controlTimer)
  15. // 此处使用的constants.CONTROL_HIDE_TIME,值为5000
  16. this.controlTimer = setTimeout(() => {
  17. this.contentMaskButtonToggle = false
  18. }, constants.CONTROL_HIDE_TIME)
  19. })
  20. // ...
  21. }

NavbarContent组件不做介绍,主要来看看菜单MenuBar组件。

菜单组件

使用@Builder装饰器自定义构建函数,UI结构上采用了Flex组件包裹Button组件的方式。

修改状态contentMaskButtonToggle,触发offset属性y轴数值改变,实现显示或隐藏菜单的效果。

通过animation属性的设置,实现过渡效果。

  1. @Builder function MenuBar () {
  2. Flex({ direction: FlexDirection.Row, wrap: FlexWrap.NoWrap }) {
  3. Button({ type: ButtonType.Normal }) { ... }
  4. Button({ type: ButtonType.Normal }) { ... }
  5. Button({ type: ButtonType.Normal }) { ... }
  6. }
  7. .width('100%').height(constants.UI.MENU_HEIGHT)
  8. .offset({ x: 0, y: this.contentMaskButtonToggle ? 0 : constants.UI.MENU_HEIGHT })
  9. .animation({
  10. duration: 300,
  11. curve: Curve.Linear,
  12. iterations: 1
  13. })
  14. }

以上就是这个小例的核心思路和示例代码。

完结散花

如发现文章内容有任何问题,请提出您的宝贵意见予以指正,感谢您的阅读。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/687995
推荐阅读
相关标签
  

闽ICP备14008679号