HarmonyOS 类似GestureDetector、ScrollerCompat 的实现

Harmony Next 是否有类似 GestureDetector、ScrollerCompat 的实现?

在使用HarmonyOS 绘制图表的过程中,需要做到手指点击并滑动 Canvas,画布上绘制的图形能跟随手指滑动,手指抬起后,图形能具有惯性继续减速滑动。

app 项目中,使用的是 GestureDetector、ScrollerCompat 实现,通过 ScrollerCompat.getCurrX()、getCurrY() 获取滚动的偏移位置,通过 ScrollerCompat.fling() 触发惯性滑动,通过 GestureDetector.onTouchEvent() 触发滑动事件,并获取 onScroll() 回调。

总之就是我希望在 Canvas 内,有一个类似 Scroll 容器那样的处理滚动的工具类,在我实现 Canvas 绘制过程中,能讲绘制的元素滚动起来。

MPChart 开源项目中,使用的是矩阵变换,实现方式不同,实现的效果也没有 Scroll 那种惯性效果。

请问HarmonyOS 中有类似的工具实现吗?

在 Tabs 中的图表,控制器无法正常工作

我在实现app图表绘制过程中,参考 MPChart 图表绘制,一个 chart 通过一个 model 实现数据驱动,而 model 在父组件中作为成员变量实例化。

现在我的父组件中有一个 Tabs,每个 tab 页有一个 chart,都绑定同一个 model,在每次 Tabs 切换后,发现,只有最新渲染的 tab 页中,model 正常驱动刷新了 chart,已经渲染过的旧 tab 页,model 的更新,无法影响它们。

我现在的做法是,父组件在生成 Tabs 时,有几个 tab 页,就创建几个 model 列表,chart 至绑定对应编号的 model,切换 tab 页时,更新对应 model,或者更新所有 model,chart 可以被正常更新。

请问为什么不能所有 tab 页中,chart 绑定同一个 model?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

可以参考下arkui上的实现:

let friction =    0.7
let FRICTION_SCALE = -4.2
let response=Math.abs(2*Math.PI / (-4.2 * friction))
let tmpStiffness =(2* Math.PI/response);
let stiffness = tmpStiffness * tmpStiffness;
let damping=4*Math.PI/response;
let end = start + velocity/(friction *-FRICTIoN_SCALE)

easing: "interpolating-spring("+ v + ",1," + stiffness + "," + damping + ")",
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 怎么实现类似SnackBar效果
145浏览 • 1回复 待解决
如何实现类似插槽功能
2152浏览 • 1回复 待解决
如何实现类似keyframes效果
1982浏览 • 1回复 待解决
如何实现类似.9 图功能
1628浏览 • 1回复 待解决
怎么实现类似oc代理模式
699浏览 • 1回复 待解决
HarmonyOS类似骨架屏实现demo吗
221浏览 • 1回复 待解决
HarmonyOS 类似翻页效果实现
459浏览 • 1回复 待解决
HarmonyOS 有没有类似JavaClss类实现
90浏览 • 1回复 待解决