虽然现在RecyelerView很流行,但是作为老大哥ListVIew也还是被广泛使用,在Android中listview滑动到最后或者第一条的时候不像IOS那么顺滑,感觉交互有点生硬,现在最多也只有一个半月形的阴影,所以就可以自定义一个弹性的listview,要做到弹性listview,只要重写overScrollBy方法就可以了,此方法中的maxOverScrollY这个参数就是ListVIew在Y轴的滑动距离:
public class MyListView extends ListView {
private Context mContext;
private int mMaxOverDistance = 200;
public MyListView(Context context) {
this(context, null);
}
public MyListView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
initView();
}
private void initView() {
DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
float density = metrics.density;
mMaxOverDistance = (int) (mMaxOverDistance * density);
}
@Override
protected boolean overScrollBy(int deltaX,
int deltaY,
int scrollX,
int scrollY,
int scrollRangeX,
int scrollRangeY,
int maxOverScrollX,
int maxOverScrollY,
boolean isTouchEvent) {
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
scrollRangeY, maxOverScrollX, mMaxOverDistance, isTouchEvent);
}
}