android 的 onTouchEvent 的 ACTION_MOVE 事件, 如何提高获取的频率? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leven87
V2EX    Android

android 的 onTouchEvent 的 ACTION_MOVE 事件, 如何提高获取的频率?

  •  
  •   leven87 2020-08-20 17:04:35 +08:00 12635 次点击
    这是一个创建于 1884 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Hello,现在在做一个项目。当用户在画板上( View )画图时,需要通过捕获 onTouchEvent 的 ACTION_MOVE,来获取画笔移动的点的轨迹。

    现在遇到的问题,这个事件触发的频率太低,导致获取的点不够多。想请问,有没有什么办法,可以提高这一事件的触发频率?

    谢谢!

    15 条回复    2020-08-31 11:35:04 +08:00
    gam2046
        2
    gam2046  
       2020-08-20 17:22:36 +08:00   1
    触屏的采样率决定了上限,同样的程序,使用性能更好的设备,测试一下看。
    wuketidai
        3
    wuketidai  
       2020-08-20 20:41:52 +08:00
    感觉方向错了,应该设计算法让 Path 更加平滑上优化吧
    leven87
        4
    leven87  
    OP
       2020-08-20 20:48:11 +08:00
    @wuketidai 没有足够的点,很难平滑呀。 当然有些采样技术可以模拟出一些点。
    leven87
        5
    leven87  
    OP
       2020-08-20 20:51:55 +08:00
    @gam2046 也许吧。 现在 1s 时间 可以采集 50 个点。 不知道快慢了。如果不能提升,要想写其它办法。
    wuketidai
        7
    wuketidai  
       2020-08-20 21:05:02 +08:00
    Blanke
        8
    Blanke  
       2020-08-21 09:24:34 +08:00 via Android
    之前做过类似的应用,没遇到过这个问题
    krystal9527
        9
    krystal9527  
       2020-08-21 09:56:06 +08:00   1
    @leven87 可以用贝塞尔曲线绘制运动轨迹,很好看,不会有毛刺
    leven87
        11
    leven87  
    OP
       2020-08-24 16:50:44 +08:00
    @krystal9527 谢谢。不过贝塞尔曲线好像不能让我获取更多的点。我是要获取绘图轨迹上的点,越多越好,也就是说每调用 ACTION_MOVE 会记录一下坐标值( x,y )。
    不过这个曲线很棒,我会加在我代码里。谢谢
    Cabana
        12
    Cabana  
       2020-08-26 09:38:16 +08:00   1
    之前也做过画板的路过,MotionEvent.getHistoryXXXX()方法可解,触摸事件其实被采样的频率很高的,只是回调到上层时太高的频率对下游事件处理压力和帧率的考虑,做了类似"throttle"的处理,其余的事件可以通过 #6 楼官方文档的方式拿到。
    leven87
        13
    leven87  
    OP
       2020-08-27 17:04:52 +08:00
    @Cabana 谢谢,我尝试一下!
    leven87
        14
    leven87  
    OP
       2020-08-27 23:57:57 +08:00
    @DeweyReed @Cabana 感谢,帮大忙了。 我用 batching 的方法,从原来的 50 点 /秒,提高到 150 点 /秒。 当然,也在落笔和抬笔的时候,出现了不少重复的点。
    rangoBen
        15
    rangoBen  
       2020-08-31 11:35:04 +08:00
    按照 16ms 的频率进行采样是不是就足够了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2782 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 08:54 PVG 16:54 LAX 01:54 JFK 04:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86