android ScrollView ListView的回弹效果
2013-12-02 17:46
561 查看
平常我们在使用ScrollView或者ListView的时候,最终的效果在各个系统上并不相同,有的系统支持滑动到顶后能后还能继续向下滑动一段距离,比如魅族的系统,这样可以很清晰的提示用户到达边界,但是有的系统,比如MIUI并不支持,其实android系统默认是支持这种滑动方式的,就在函数:
[java] view plaincopy
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)
这个函数是定义在View中的,在滑动到边界的时候系统会调用这个函数
其中maxOverScrollX和maxOVerScrollY为超出边界的最大值,但是系统默认值是0,既不会超出边界,有些定制过得系统会修改此值,就实现了回弹的效果
我们要实现这种回弹效果,只要继承ScrollView或者ListView,重写 overScrollBy 方法,修改参数即可,下面以ListView为例
[java] view plaincopy
package com.example.test;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class ScrollBackListView extends ListView{
private static final int MAX_SCROLL = 200;
private static final float SCROLL_RATIO = 0.5f;// 阻尼系数
private Context mContext;
public ScrollBackListView(Context context){
super(context);
mContext = context;
}
public ScrollBackListView(Context context, AttributeSet attrs){
super(context, attrs);
mContext = context;
}
public ScrollBackListView(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
mContext = context;
}
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent){
int newDeltaY = deltaY;
int delta = (int) (deltaY * SCROLL_RATIO);
if (delta != 0) newDeltaY = delta;
return super.overScrollBy(deltaX, newDeltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, MAX_SCROLL, isTouchEvent);
}
}
其中deltaX,deltaY为本次滑动偏移,scrollX,scrollY为当前总偏移,我们可以给deltaY乘以一个小数来达到一种阻尼的效果
结果截图:
[java] view plaincopy
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)
这个函数是定义在View中的,在滑动到边界的时候系统会调用这个函数
其中maxOverScrollX和maxOVerScrollY为超出边界的最大值,但是系统默认值是0,既不会超出边界,有些定制过得系统会修改此值,就实现了回弹的效果
我们要实现这种回弹效果,只要继承ScrollView或者ListView,重写 overScrollBy 方法,修改参数即可,下面以ListView为例
[java] view plaincopy
package com.example.test;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class ScrollBackListView extends ListView{
private static final int MAX_SCROLL = 200;
private static final float SCROLL_RATIO = 0.5f;// 阻尼系数
private Context mContext;
public ScrollBackListView(Context context){
super(context);
mContext = context;
}
public ScrollBackListView(Context context, AttributeSet attrs){
super(context, attrs);
mContext = context;
}
public ScrollBackListView(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
mContext = context;
}
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent){
int newDeltaY = deltaY;
int delta = (int) (deltaY * SCROLL_RATIO);
if (delta != 0) newDeltaY = delta;
return super.overScrollBy(deltaX, newDeltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, MAX_SCROLL, isTouchEvent);
}
}
其中deltaX,deltaY为本次滑动偏移,scrollX,scrollY为当前总偏移,我们可以给deltaY乘以一个小数来达到一种阻尼的效果
结果截图:
相关文章推荐
- Android回弹阻尼效果的简单实现,非基于ListView,ScrollView
- Android 三种布局实现上下回弹效果(普通布局,ListView,ScrollView)
- 如何实现android ScrollView ListView的回弹效果
- Android 弹性ListView和ScrollView 简单优雅地实现回弹效果
- Android 三种布局实现上下回弹效果(普通布局,ListView,ScrollView)
- Android仿IOS回弹效果 ScrollView回弹 总结
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突)
- Android 自定义ScrollView 支持惯性滑动,惯性回弹效果。支持上拉加载更多
- Android仿IOS回弹效果 ScrollView回弹
- android ListView 仿IOS 回弹效果
- Android 自定义ScrollView 支持惯性滑动,惯性回弹效果。支持上拉加载更多
- Android ScrollView回弹效果(一)修改版
- Android ScrollView实现横向和竖向拖动回弹效果
- Android中自定义仿IOS回弹效果的ListView
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突) .
- ListView和ScrollView的下拉和上拉的回弹效果
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突)
- android 自定义scrollview 仿QQ空间效果 下拉伸缩顶部图片,上拉回弹 上拉滚动顶部title 颜色渐变
- 三种布局实现上下回弹效果(普通布局,ListView,ScrollView)
- Android自定义View--ScrollView实现回弹效果