Hello,现在在做一个项目。当用户在画板上( View )画图时,需要通过捕获 onTouchEvent 的 ACTION_MOVE,来获取画笔移动的点的轨迹。
现在遇到的问题是,这个事件触发的频率太低,导致获取的点不够多。想请问,有没有什么办法,可以提高这一事件的触发频率?
谢谢!
1
Melodyer 2020-08-20 17:09:56 +08:00 1
|
2
gam2046 2020-08-20 17:22:36 +08:00 1
触屏的采样率决定了上限,同样的程序,使用性能更好的设备,测试一下看。
|
3
wuketidai 2020-08-20 20:41:52 +08:00
感觉方向错了,应该设计算法让 Path 更加平滑上优化吧
|
6
DeweyReed 2020-08-20 21:00:17 +08:00 1
|
7
wuketidai 2020-08-20 21:05:02 +08:00
|
8
Blanke 2020-08-21 09:24:34 +08:00 via Android
之前做过类似的应用,没遇到过这个问题
|
9
krystal9527 2020-08-21 09:56:06 +08:00 1
@leven87 可以用贝塞尔曲线绘制运动轨迹,很好看,不会有毛刺
|
10
krystal9527 2020-08-21 09:59:13 +08:00
|
11
leven87 OP @krystal9527 谢谢。不过贝塞尔曲线好像不能让我获取更多的点。我是要获取绘图轨迹上的点,越多越好,也就是说每调用 ACTION_MOVE 会记录一下坐标值( x,y )。
不过这个曲线很棒,我会加在我代码里。谢谢 |
12
Cabana 2020-08-26 09:38:16 +08:00 1
之前也做过画板的路过,MotionEvent.getHistoryXXXX()方法可解,触摸事件其实被采样的频率很高的,只是回调到上层时太高的频率对下游事件处理压力和帧率的考虑,做了类似"throttle"的处理,其余的事件可以通过 #6 楼官方文档的方式拿到。
|
14
leven87 OP |
15
rangoBen 2020-08-31 11:35:04 +08:00
按照 16ms 的频率进行采样是不是就足够了。
|