弹性ListView

虽然现在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);
    }
}

你可能感兴趣的:(弹性ListView)