赞
踩
本示例介绍使用Text、List等组件,添加点击事件onclick,动画,animationTo实现自定义Tab效果。
使用说明
Text(title) .textAlign(TextAlign.Center) .height($r('app.integer.custom_view_width_and_height_value4')) .width(this.titleLengthRadix3 * title.length) .fontColor(this.currentIndex == idx ? (this.wantGoIndex == idx ? $r('app.color.custom_view_background_color1'):$r('app.color.custom_view_background_color2')): (this.wantGoIndex == idx ? $r('app.color.custom_view_background_color1'):$r('app.color.custom_view_background_color2'))) .fontSize(this.currentIndex == idx ? $r('app.integer.custom_view_font_size2') : $r('app.integer.custom_view_font_size1')) .fontWeight(this.currentIndex == idx ? FontWeight.Bold : FontWeight.Normal) .onClick(() => { if (this.currentIndex != idx) { // 记录点击index this.wantGoIndex = idx; // 动画效果 animateTo({ duration: Math.abs(idx - this.currentIndex) * this.durationRadix, curve: Curve.EaseInOut, iterations: this.iterationsDefault, playMode: PlayMode.Normal, onFinish: () => { this.currentIndex = idx; this.scroller.scrollToIndex(this.currentIndex, true, ScrollAlign.START); } }, () => { this.transitionX = this.getTransitionX(idx); }) } })
PanGesture(this.panOption) .onActionUpdate((event:GestureEvent) => { if (!this.isStartAction) { this.isStartAction = true; if (event.offsetX < this.judgmentValue) { if (this.currentIndex < this.titleArray.length - this.currentIndexRadix) { let temIndex: number = this.currentIndex + this.currentIndexRadix; this.scroller.scrollToIndex(temIndex, true, ScrollAlign.START); this.wantGoIndex = temIndex; animateTo({ duration: Math.abs(temIndex - this.currentIndex) * this.durationRadix, curve: Curve.EaseInOut, iterations: this.iterationsDefault, playMode: PlayMode.Normal, onFinish: () => { this.currentIndex = temIndex; } }, () => { this.transitionX = this.getTransitionX(temIndex); }) } } else { if (this.currentIndex > this.judgmentValue) { let temIndex: number = this.currentIndex - this.currentIndexRadix; this.scroller.scrollToIndex(temIndex, true, ScrollAlign.START); this.wantGoIndex = temIndex; animateTo({ duration: Math.abs(temIndex - this.currentIndex) * this.durationRadix, curve: Curve.EaseInOut, iterations: this.iterationsDefault, playMode: PlayMode.Normal, onFinish: () => { this.currentIndex = temIndex; } }, () => { this.transitionX = this.getTransitionX(temIndex); }) } } } })
scrollToIndex方法,开启smooth动效时,会对经过的所有item进行加载和布局计算,当大量加载item时会导致性能问题
customview // har类型
|---view
| |---CustomView.ets // 视图层-自定义视图实现Tab效果
也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线【包含了大APP实战项目开发】。
gitee.com/MNxiaona/733GH
https://gitee.com/MNxiaona/733GH
1.基本概念
2.构建第一个ArkTS应用
3.……
gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
gitee.com/MNxiaona/733GH
gitee.com/MNxiaona/733GH
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。