雖然現(xiàn)在RecyelerView很流行苛白,但是作為老大哥ListVIew也還是被廣泛使用,在Android中l(wèi)istview滑動(dòng)到最后或者第一條的時(shí)候不像IOS那么順滑,感覺交互有點(diǎn)生硬,現(xiàn)在最多也只有一個(gè)半月形的陰影,所以就可以自定義一個(gè)彈性的listview椎组,要做到彈性listview,只要重寫overScrollBy方法就可以了历恐,此方法中的maxOverScrollY這個(gè)參數(shù)就是ListVIew在Y軸的滑動(dòng)距離:
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);
}
}