行业网站推广,网站开发案例php,宁波网络关键词优化费用,网站的信息管理建设的必要性场景一#xff1a;父子组件同时绑定手势的冲突处理
效果图 方案
在默认情况下#xff0c;手势事件为非冒泡事件#xff0c;当父子组件绑定相同的手势时#xff0c;父子组件绑定的手势事件会发生竞争#xff0c;最多只有一个组件的手势事件能够获得响应#xff0c;默认子…场景一父子组件同时绑定手势的冲突处理
效果图 方案
在默认情况下手势事件为非冒泡事件当父子组件绑定相同的手势时父子组件绑定的手势事件会发生竞争最多只有一个组件的手势事件能够获得响应默认子组件优先识别通过gesture绑定的手势。 当父组件使用priorityGesture绑定与子组件同类型的手势时父组件优先识别通过priorityGesture绑定的手势子组件的手势不会进行识别响应。 当父组件绑定了并行手势parallelGesture时父子组件相同的手势事件都可以触发实现类似冒泡效果当前规格当父组件和子组件同时绑定单击手势事件和双击手势事件时父组件和子组件均只响应单击手势事件。
核心代码
build() {Column() {Column() {Text(TapGesture: this.priorityTestValue).fontSize(28).gesture(TapGesture().onAction(() {this.priorityTestValue \n子组件响应}))}.height(300).width(250).padding(20).margin(20).border({ width: 3 })// 设置为priorityGesture时点击文本会忽略Text组件的TapGesture手势事件优先识别父组件Column的TapGesture手势事件.priorityGesture(TapGesture().onAction((event?: GestureEvent) {this.priorityTestValue \n父组件响应}), GestureMask.IgnoreInternal)Column() {Text(TapGesture: this.parallelTestValue).fontSize(28).gesture(TapGesture().onAction(() {this.parallelTestValue \n子组件响应}))}.height(300).width(250).padding(20).margin(20).border({ width: 3 })// 设置为parallelGesture时点击文本会同时触发子组件Text与父组件Column的TapGesture手势事件.parallelGesture(TapGesture().onAction((event?: GestureEvent) {this.parallelTestValue \n父组件响应}), GestureMask.Normal)}} 场景二手势实现自定义组件滑动离手后的惯性滑动效果。
效果图 方案
通过GestureEvent中开放出来的的velocityX和velocityY分别对应当前手势的x轴方向速度和y轴方向速度通过离手时的速度计算惯性滑动的距离通过动画animateTo来模拟惯性滑动的效果。
核心代码 .gesture(PanGesture(this.panOption).onActionStart((event?: GestureEvent) {console.info(Pan start)}).onActionUpdate((event?: GestureEvent) {if (event) {this.vX event.velocityXthis.vY event.velocityYthis.offsetX this.positionX event.offsetXthis.offsetY this.positionY event.offsetY}}).onActionEnd(() {animateTo({duration: 1000,curve: Curve.EaseOut,iterations: 1,playMode: PlayMode.Normal,onFinish: () {console.info(play end)}}, () {// 滑动距离s Vo*t(Vt-Vo)/t*t^2/2 Vo*t(Vt-Vo)*t/2 Vo*tVt*t/2-Vo*t/2 (VoVt)*t/2// Vo Vx Vt 0 当t1时this.offsetX this.vX / 2this.offsetY this.vY / 2})})) 场景三手势实现类似地图中搜索地址滑动效果
方案
使用bindSheet属性为组件绑定半模态页面结合绑定并行手势事件parallelGesture在手指上滑和下滑时分别进行手势的操作修改半模态页面的高度值。
核心代码 手指上滑时优先识别list组件自身滚动效果当list滚动到临界值时触发list组件的onReachEnd回调在回调中修改自定义变量值在并行手势parallelGesture的panGesture手势的onActionUpdate回调中进行逻辑判断以及对半模态页面的高度进行动态赋值为原先高度加上手势偏移量。
.onReachEnd(() {this.reachEndtruethis.aaatruethis.reachStartfalseconsole.log(onReachEnd, this.reachEnd:this.reachEnd,this.reachStart:this.reachStart)})// list往上滑到头识别手势高度增加if(this.reachEnd){animateTo({duration: 2000,curve: Curve.EaseOut,iterations: 1,playMode: PlayMode.Normal,onFinish: () {console.info(play end)}}, () {this.sheetHeightthis.setSheetHeight-event.offsetY})if(event.offsetY0){this.reachEndfalseconsole.log(this.reachEnd, this.reachEnd)}console.log(offsetY 往上滑,event.offsetY,event.offsetY)} 手指下滑时优先识别List组件自身滚动效果当List滚动到临界值时触发List组件的onReachStart回调在回调中修改自定义变量值在并行手势parallelGesture的panGesture手势的onActionUpdate回调中进行逻辑判断以及对半模态页面的高度进行动态赋值为原先高度减去手势偏移量。
.onReachStart(() {this.reachStarttruethis.reachEndfalseconsole.log(onReachStart,this.reachEnd:this.reachEnd,this.reachStart:this.reachStart)})// list往下滑到底识别手势高度减小if(this.reachStart){animateTo({duration: 2000,curve: Curve.EaseOut,iterations: 1,playMode: PlayMode.Normal,onFinish: () {console.info(play end)}}, () {this.sheetHeightthis.setSheetHeight-event.offsetY})if(event.offsetY0){this.reachStartfalseconsole.log(this.reachEnd, this.reachStart)}console.log(offsetY 往下滑,event.offsetY,this.reachStart)}
最后
有很多小伙伴不知道学习哪些鸿蒙开发技术不知道需要重点掌握哪些鸿蒙应用开发知识点但是又不知道从哪里下手而且学习时频繁踩坑最终浪费大量时间。所以本人整理了一些比较合适的鸿蒙HarmonyOS NEXT学习路径和一些资料的整理供小伙伴学习
点击领取→纯血鸿蒙Next全套最新学习资料安全链接放心点击
希望这一份鸿蒙学习资料能够给大家带来帮助有需要的小伙伴自行领取限时开源先到先得~无套路领取 一、鸿蒙HarmonyOS NEXT最新学习路线
有了路线图怎么能没有学习资料呢小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙OpenHarmony 学习手册共计1236页与鸿蒙OpenHarmony 开发入门教学视频内容包含ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等鸿蒙HarmonyOS NEXT…等技术知识点。
获取以上完整版高清学习路线请点击→纯血版全套鸿蒙HarmonyOS学习资料
二、HarmonyOS Next 最新全套视频教程
三、《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
ArkTS语言安装DevEco Studio运用你的第一个ArkTS应用ArkUI声明式UI开发.……
《鸿蒙开发进阶》
Stage模型入门网络管理数据管理电话服务分布式应用开发通知与窗口管理多媒体技术安全技能任务管理WebGL国际化开发应用测试DFX面向未来设计鸿蒙系统移植和裁剪定制……
《鸿蒙进阶实战》
ArkTS实践UIAbility应用网络案例……
四、大厂面试必问面试题
五、鸿蒙南向开发技术
六、鸿蒙APP开发必备
七、鸿蒙生态应用开发白皮书V2.0PDF
完整鸿蒙HarmonyOS学习资料请点击→纯血版全套鸿蒙HarmonyOS学习资料
总结 总的来说华为鸿蒙不再兼容安卓对中年程序员来说是一个挑战也是一个机会。只有积极应对变化不断学习和提升自己他们才能在这个变革的时代中立于不败之地。