在android4.0及以前的版本如何去掉ListView/GridView下拉出空白回弹的效果

在android4.0及以前的版本如何去掉ListView/GridView下拉出空白回弹的效果

[DESCRIPTION]

Android 4.0及以前的版本上,MTK有在Google默认有模糊边缘的基础上,做了一个
下拉回弹的效果,在ListView和GridView等列表控件的界面上,当滑动画面到顶部或底部时
,屏幕上方或下方处会有一个很长的空的区域,松手以后列表会自动弹回,如下图的设置界面列表
底部的黑色区域所示:

5.12tp-31.png (102.99 KB, 下载次数: 0 )

下载附件  保存到相册

2016-5-12 15:51 上传


如果想在所有列表界面都去掉这种回弹效果,可以做如下改动

[SOLUTION]

请做如下修改:
1.alps/frameworks/base/core/ JAVA/android/view/ViewConfiguration.java
修改如下两个变量为如下的值
/**
* Max distance to overscroll for edge effects
*/
private static final int OVERSCROLL_DISTANCE = 0; //将240改为0
/**
* Max distance to overfling for edge effects
*/
private static final int OVERFLING_DISTANCE = 6; //将240改为6
2.alps/frameworks/base/core/java/android/widget/AbsListView.java
找到FlingRunnable这个类的run()方法
找到run()方法中的 case TOUCH_MODE_OVERFLING,在这个case中,找到如下代码段:
if (DBG_MOTION) {
Xlog.d(TAG, "FlingRunnable overScrollBy return false: mScrollY = " + mScrollY
+ ",old scrollY = " + scrollY + ",needChangeMode = " + needChangeMode
+ ",mScroller.getCurrVelocity() = " + mScroller.getCurrVelocity());
}
if (needChangeMode && mOverscrollDistance >0) { // edit line
Xlog.i(TAG, "FlingRunnable oComing back to 'real' list flinging:velocity = "
+ mScroller.getCurrVelocity() + ",mItemCount = " + mItemCount);
// Coming back to 'real' list flinging.
invalidateParentIfNeeded();
将if (needChangeMode && mOverscrollDistance >0) { 这个if判断语句改为如上所示
注意:上述的修改是将MTK在Google默认的效果基础上所添加的那个下拉回弹的效果
去掉,将其恢复到Google原始的那种list界面拉到顶部或底部有模糊边缘的那种效果

猜你喜欢

转载自blog.csdn.net/sandform/article/details/52025097