欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > HarmonyOS - TabBar 实现小米有品风格的高亮切换效果

HarmonyOS - TabBar 实现小米有品风格的高亮切换效果

2024/10/24 7:27:23 来源:https://blog.csdn.net/qq_68577316/article/details/140909596  浏览:    关键词:HarmonyOS - TabBar 实现小米有品风格的高亮切换效果

1、引言 

在HarmonyOS应用开发中,TabBar是一个非常实用的组件,它可以帮助用户快速地在不同的页面之间进行切换。本篇文章将介绍如何使用HarmonyOS中的TabBar组件,并实现一种类似小米有品App中的高亮切换效果。

2、示例设计

  1. 定义TabBar:

    • 创建一个TabBar并为其添加四个TabBarItem,分别代表“首页”、“分类”、“购物车”和“我的”。
    • 为每个TabBarItem设置图标和标题。
  2. 设置样式:

    • 设置选中状态下的文字和图标颜色为红色。
    • 设置未选中状态下的文字和图标颜色为灰色。
  3. 添加事件监听器:

    • 当某个选项卡被选中时,可以播放一个动画或更改背景色来增加视觉反馈。
    • 当选项卡被取消选中时,恢复到默认状态。
    • 当同一个选项卡被再次点击时,可以显示提示信息或执行其他逻辑。

3、源码

@Entry
@Component
struct Index3 {// 准备状态,存储激活的索引@State selectedIndex: number = 0@BuildermyBuilder(itemIndex: number, title: string, img: ResourceStr, selectImg:ResourceStr) {// 如果激活的是自己,图片/文本 都需要调整样式 -》 需要区分不同的TabBarColumn() {Image(itemIndex == this.selectedIndex ? selectImg : img).width(30)Text(title).fontColor(itemIndex == this.selectedIndex ? Color.Orange : Color.Black)}}@BuildercenterBuilder(itemIndex: number, img: ResourceStr, selectImg:ResourceStr){Image(itemIndex == this.selectedIndex ? selectImg : img).width(40).margin({bottom:10})}build() {Tabs({ barPosition: BarPosition.End }) {TabContent() {Text('首页内容')}.tabBar(this.myBuilder(0, '首页', $r('app.media.ic_tabbar_icon_0'),$r('app.media.ic_tabbar_icon_0_selected')))TabContent() {Text('分类内容')}.tabBar(this.myBuilder(1, '分类', $r('app.media.ic_tabbar_icon_1'),$r('app.media.ic_tabbar_icon_1_selected')))TabContent(){Text('汇潮学堂')}.tabBar(this.centerBuilder(2, $r('app.media.ic_reuse_02'),$r('app.media.logo')))TabContent() {Text('购物车内容')}.tabBar(this.myBuilder(3, '购物车', $r('app.media.ic_tabbar_icon_2'),$r('app.media.ic_tabbar_icon_2_selected')))TabContent() {Text('我的内容')}.tabBar(this.myBuilder(4, '我的', $r('app.media.ic_tabbar_icon_3'),$r('app.media.ic_tabbar_icon_3_selected')))}.scrollable(false).animationDuration(0).onChange((index: number) => {this.selectedIndex = index// console.log('',this.selectedIndex)})}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com