xml 中theme一定要是NoActionBar
写一个类继承ListView
重写 overScrollBy 方法 测试此方法
package com.yifei.myapplication;
import android.content.Context;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.widget.ListView;
public class MyFlexibleListView extends ListView {
private static int mMaxOverScrollY = 50; //最大值为50 超过这个值回回弹
private Context mcontext;
public MyFlexibleListView(Context context) {
super(context);
mcontext = context;
initView();
}
public MyFlexibleListView(Context context, AttributeSet attrs) {
super(context, attrs);
mcontext = context;
initView();
}
public MyFlexibleListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mcontext = context;
initView();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public MyFlexibleListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
mcontext = context;
initView();
}
private void initView() {
DisplayMetrics metrics = mcontext.getResources().getDisplayMetrics();//得到屏幕的分辨率
float density = metrics.density;//得到屏幕分辨率比例
mMaxOverScrollY = (int) (density * mMaxOverScrollY);
}
//滚动时的方法
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
Log.d("MyFlexible", deltaX + "--deltaY--- " + deltaY);
Log.d("MyFlexible", scrollX + "--scrollY---" + scrollY);
Log.d("MyFlexible", scrollRangeX + "--scrollRangeY--" + scrollRangeY);
Log.d("MyFlexible", maxOverScrollX + "--mMaxOverScrollY--" + mMaxOverScrollY);
Log.d("MyFlexible", "=======================================");
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxOverScrollY, isTouchEvent);
}
}