android仿ios弹性页

来源:互联网 发布:淘宝产品信息模板 编辑:程序博客网 时间:2024/05/17 23:17
public class Drag extends LinearLayout {    private ViewDragHelper mDraw;    private Point mPoint = new Point();    public Drag(Context context, AttributeSet attrs) {        super(context, attrs);        mDraw = ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback() {            @Override            public boolean tryCaptureView(View child, int pointerId) {                return true;            }            @Override            public int clampViewPositionHorizontal(View child, int left, int dx) {                int boundaryLeft = getPaddingLeft();                int boundaryRight = getWidth() - child.getWidth() - getPaddingRight();                left = Math.min(Math.max(left, boundaryLeft), boundaryRight);                return left;            }            @Override            public int clampViewPositionVertical(View child, int top, int dy) {                Log.e("zxc", "top-------->" + top);                //垂直下拉弹性                if (top == 0) {                    top = 0;                }                if (top > 300) {                    top = 300;                }              //垂直上拉弹性                if (top < 0){                    if (top < -300){                        top = -300;                    }                }                return top;            }            //手指释放的时候回调            @Override            public void onViewReleased(View releasedChild, float xvel, float yvel) {                mDraw.settleCapturedViewAt(0,0);                invalidate();            }        });    }    @Override    public void computeScroll()    {        if(mDraw.continueSettling(true))        {            invalidate();        }    }    @Override    protected void onLayout(boolean changed, int l, int t, int r, int b) {        super.onLayout(changed, l, t, r, b);    }    @Override    public boolean onInterceptTouchEvent(MotionEvent ev) {        return mDraw.shouldInterceptTouchEvent(ev);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        mDraw.processTouchEvent(event);        return true;    }}

0 0