源地址: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;
}