android仿ios弹性页
16lz
2021-12-04
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; }}
更多相关文章
- android下拉菜单三级联动
- Android(安卓)Spinner
- Android开发布局系列: LinearLayout布局实现垂直水平居中
- Android界面布局详解
- Android(安卓)Studio开发基础之AutoCompleteTextView控件的使用
- [Android] TextView的垂直滚动效果
- Android(安卓)UI组件Spinner下拉列表详解
- Android:控件AutoCompleteTextView 自动提示
- Android(安卓)Adapter