public class SlideRightViewDragHelper extends LinearLayout {    private ViewDragHelper viewDragHelper;    private View child;    private Point childPosition = new Point();    private Point childEndPosition = new Point();    private OnReleasedListener onReleasedListener;    private int oldX;    private int screenWidth;//屏幕宽    private int screenWidthto = 70;//当前滑动比例  大于这个值时滑动完成、小于时回弹    public SlideRightViewDragHelper(Context context, AttributeSet attrs) {        super(context, attrs);        screenWidth = getResources().getDisplayMetrics().widthPixels;//获取屏幕宽        //新建viewDragHelper ,viewGroup, 灵敏度,回调(子view的移动)        viewDragHelper = 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) {                oldX = left;                return Math.max(0, left);            }            @Override            public void onViewReleased(View releasedChild, float xvel, float yvel) {                //滑动比例大于70,视为滑动完成                if ((oldX*100/screenWidth) > screenWidthto) {                    viewDragHelper.settleCapturedViewAt(childPosition.x, childPosition.y); //不管是滑动成功还是失败,都必须反弹                    invalidate();                    //滑动完成的回调                    if (onReleasedListener != null){                        onReleasedListener.onReleased();                    }                    //下面是不反弹的代码,根据自己的需求自行改动                    //                    viewDragHelper.settleCapturedViewAt(childEndPosition.x, childEndPosition.y);不反弹的代码//                    invalidate(); //必须刷新,因为其内部使用的是mScroller.startScroll,所以别忘了需要invalidate()以及结合computeScroll方法一起。                } else {                    viewDragHelper.settleCapturedViewAt(childPosition.x, childPosition.y); //反弹                    invalidate();                }                super.onViewReleased(releasedChild, xvel, yvel);            }        });    }    @Override    protected void onFinishInflate() {        super.onFinishInflate();        child = getChildAt(0);    }    @Override   //用viewDragHelper拦截-true    public boolean onInterceptTouchEvent(MotionEvent ev) {        return viewDragHelper.shouldInterceptTouchEvent(ev);    }    @Override  //viewDragHelper拦截事件    public boolean onTouchEvent(MotionEvent event) {        viewDragHelper.processTouchEvent(event);        return true;    }    @Override    protected void onLayout(boolean changed, int l, int t, int r, int b) {        super.onLayout(changed, l, t, r, b);        //定位一开始的坐标        childPosition.x = child.getLeft();        childPosition.y = child.getTop();        //滑动成功后定位坐标        childEndPosition.x = child.getRight();        childEndPosition.y = child.getTop();    }    @Override    public void computeScroll() {        super.computeScroll();        if (viewDragHelper.continueSettling(true)) {            invalidate();        }    }    //调用此方法进行回调    public void setOnReleasedListener(OnReleasedListener onReleasedListener) {        this.onReleasedListener = onReleasedListener;    }//滑动完成的回调接口    public interface OnReleasedListener {        void onReleased();    }}

效果图,看着还是不错的

滑动状态的效果

使用CardView进行圆角裁剪

                                                                                                                                                                            

滑动完成的回调方法,自己实现即可

slideRightView.setOnReleasedListener();

当然也可以不使用CardView进行裁剪,根据自己的项目需求使用。

打完收工。。。

更多相关文章

  1. android Gallery做图片滚动,每次滑动翻一页
  2. android 进度对话框 圈
  3. Android仿抖音App 列表滑动 PagerSnapHelper
  4. android 简单的上拉加载实现
  5. Android(安卓)GestureDetector方法详解
  6. [置顶] Android(安卓)ViewPager+Fragment超高仿微信主界面(带底部
  7. Android(安卓)UI开发第二十篇——仿launcher的左右滑动
  8. Android(安卓)手势的识别和控制 GestureDetecor
  9. android源码解析--switch

随机推荐

  1. 【Android应用开发】-(19)Android(安卓)串
  2. android自动化测试工具简介
  3. 2013.03.19(8)———android 打开url 浏览
  4. Android(安卓)GridView的使用
  5. android:launchMode — “standard” “s
  6. 几个标签属性的意义
  7. android下拉刷新android-Ultra-Pull-To-R
  8. Android使用Asynchronous Http Client完
  9. Android手势翻页效果
  10. Android(安卓)最火框架XUtils之注解机制