在android4.0及以前的版本如何去掉ListView/GridView下拉出空白回弹的效果
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
在android 4.0及以前的版本上,mtk有在Google默认有模糊边缘的基础上,做了一个
下拉回弹的效果,在ListView和GridView等列表控件的界面上,当滑动画面到顶部或底部时
,屏幕上方或下方处会有一个很长的空的区域,松手以后列表会自动弹回,如下图的设置界面列表
底部的黑色区域所示:
如果想在所有列表界面都去掉这种回弹效果,可以做如下改动
[SOLUTION]
请做如下修改:
1.alps/php?mod=tag&id=6090" target="_blank" class="relatedlink">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界面拉到顶部或底部有模糊边缘的那种效果
在android 4.0及以前的版本上,mtk有在Google默认有模糊边缘的基础上,做了一个
下拉回弹的效果,在ListView和GridView等列表控件的界面上,当滑动画面到顶部或底部时
,屏幕上方或下方处会有一个很长的空的区域,松手以后列表会自动弹回,如下图的设置界面列表
底部的黑色区域所示:
如果想在所有列表界面都去掉这种回弹效果,可以做如下改动
[SOLUTION]
请做如下修改:
1.alps/php?mod=tag&id=6090" target="_blank" class="relatedlink">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界面拉到顶部或底部有模糊边缘的那种效果