您的位置:首页 > 移动开发 > Android开发

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

2016-07-25 16:53 501 查看

在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界面拉到顶部或底部有模糊边缘的那种效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息