Android ListView强制停止滚动
16lz
2021-01-23
源地址:http://stackoverflow.com/questions/6369491/stop-listview-scroll-animation
private static Field mFlingEndField = null; private static Method mFlingEndMethod = null; static { try { mFlingEndField = AbsListView.class.getDeclaredField("mFlingRunnable"); mFlingEndField.setAccessible(true); mFlingEndMethod = mFlingEndField.getType().getDeclaredMethod("endFling"); mFlingEndMethod.setAccessible(true); } catch (Exception e) { mFlingEndMethod = null; } } public static void stop(ListView list) { if (mFlingEndMethod != null) { try { mFlingEndMethod.invoke(mFlingEndField.get(list)); } catch (Exception e) { } } }
第二种方法为:
listView.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_CANCEL, 0, 0, 0));
如果listView是经过自己重写的ListView, 而且在滚动停止后需要做额外的处理,可以在onTouchEvent(MotionEvent ev)内用以下代码来做:
switch (ev.getAction()) { case MotionEvent.ACTION_CANCEL: //setSelection(Integer.MAX_VALUE / 2); break; default: break; }
更多相关文章
- Android应用程序组件Content Provider的启动过程源代码分析(6)
- android常用代码片段
- Android系统进程Zygote启动过程的源代码分析(3)
- Android webview注入自己的js代码(js传入function等其他参数解决)
- Android屏幕手势检测的实现代码
- 【Android 内存优化】Bitmap 硬盘缓存 ( Google 官方 Bitmap 示
- Android一套代码适配不同Android版本终极指南
- Unity调用Android原生Java代码以及Unity打开Android原生Activity
- 告别Dagger2模板代码:DaggerAndroid原理解析