Android:Listview反弹到scrollview

有什么方法可以将ListView的弹跳效果添加到常规的scrollview中? 通过弹跳我的意思是当你触到列表的底部时橡皮筋就像效果一样。

根据ScrollView API中的内容,如果创建扩展ScrollView类的自定义视图,则应该能够覆盖onOverScrolled()方法。 在快速谷歌搜索后,我遇到了这个链接 ,看起来好像这是你想要做的……我相信这个方法是在Android 2.3.1中添加的,所以你将被限制在运行它的设备上。

添加效果反弹到android中的listview

第1步 :在com.base.view包中创建新文件BounceListView

 public class BounceListView extends ListView { private static final int MAX_Y_OVERSCROLL_DISTANCE = 200; private Context mContext; private int mMaxYOverscrollDistance; public BounceListView(Context context) { super(context); mContext = context; initBounceListView(); } public BounceListView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; initBounceListView(); } public BounceListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mContext = context; initBounceListView(); } private void initBounceListView() { //get the density of the screen and do some maths with it on the max overscroll distance //variable so that you get similar behaviors no matter what the screen size final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics(); final float density = metrics.density; mMaxYOverscrollDistance = (int) (density * MAX_Y_OVERSCROLL_DISTANCE); } @Override protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { //This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable mMaxYOverscrollDistance; return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent); } } 

第2步:在您的布局中,请更改

  

  

我find了BounceListView的最佳实现(在LGPL许可下)。 这是: https : //github.com/Larphoid/android-Overscroll-ListView

你可能有一个定制的三星设备。 您应该知道反弹效果不是Android操作系统的默认行为,它是三星引入的(它的实现也很差,它们应该使ScrollView行为相同)。 Android 2.3中引入了Overscroll支持,默认行为不是弹跳,而是强烈的光线,其强度与滚动速度/“力”成正比。 它适用于任何地方 (列表视图,滚动视图,网页浏览等)。

总之,你不应该担心这一点。 没有简单的参数可以传递给ScrollView使其像那样过度ScrollView 。 并且经历了扩展ScrollView类的所有麻烦都不值得,IMO。 只需依靠默认行为。

如果三星想要弄乱他们的用户并给他们一个不一致的UI,那就这样吧。

对于那些想要在ListView上实现反弹效果的人。

如何

添加此效果的一种方法是在ListView使用addHeaderViewaddFooterView ,并且它们的填充( topPadding用于标题视图, bottomPadding用于页脚视图)首次设置为0 ,然后我们覆盖onTouchEvent ,并根据以下内容更改填充:移动距离。

履行

示例代码

笔记

这个想法来自android-pulltorefresh ,因为弹跳效果比pull-to-refresh更简单,所以代码也更短。 ^ _ ^

希望这会对某人有所帮助..