如何让安卓的进度条在被触摸后立即开始调整数值?

默认的seekbar,在触摸开始后,不会立即调整数值。只有在触摸停止,或者滑动一段距离后,才会有视觉上的进度变化,这样的进度条,反应太慢,不够灵敏。

怎么实现按下后立即拖动?可以在触摸开始后,手动调用背后的方法。

sysVolSeek.setOnTouchListener((v, event) -> {if (event.getActionMasked()==MotionEvent.ACTION_DOWN) {try {Method mm = AbsSeekBar.class.getDeclaredMethod("trackTouchEvent", MotionEvent.class);mm.setAccessible(true);mm.invoke(v, event);return true;} catch (Exception e) {e.printStackTrace();}}return false;});

这是我翻出来的,自己在几年前写的代码,用到了反射,但答案真的是这样吗?于是我把反射的代码移除,发现也可以……

sysVolSeek.setOnTouchListener((v, event) -> event.getActionMasked()== MotionEvent.ACTION_DOWN);

只要在 ACTION_DOWN 的时候返回 true就可以了,这是为什么呢,之前并未给进度条设置触摸监听器,而是在父容器的 intercepttouch 中直接反射调用 trackTouchEvent。

录屏演示

这样的便利性往往被人所忽略,因为追求表面的华丽是容易的,追求真正的以人为本才是难题。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部