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();    }}

效果图,看着还是不错的
在这里插入图片描述
滑动状态的效果
android仿滴滴司机端滑动接到乘客,送达乘客的滑动Button_第1张图片

使用CardView进行圆角裁剪

                                                                                                                                                                            

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

slideRightView.setOnReleasedListener();

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

打完收工。。。

更多相关文章

  1. android获取屏幕长宽的方法
  2. android 进程自杀再重启的方法
  3. Android监听HOME键的最简单的方法
  4. Android单击屏幕获得坐标,屏幕多点触摸测试器
  5. android EditText 不自动弹出键盘的方法
  6. Android Studio ADB响应失败解决方法
  7. Unity 调用 Android Native 方法(一) 获得Android系统音量
  8. Mac 下面,添加android adb命令(一般环境变量的添加方法)

随机推荐

  1. Android艺术探究二次学习笔记
  2. Android(安卓)代码模拟ListView item的点
  3. Android:调试之DDMS
  4. 简单的三方登录SDK示例,Android(安卓)Acti
  5. JAVA环境变量设置以及Android(安卓)adb环
  6. Android(安卓)---- 侧滑删除菜单的实现
  7. 新建一个 Android(安卓)项目
  8. 安卓学习第一天
  9. Android(安卓)Studio 安装教程以及gradle
  10. Android(安卓)Studio中SVN安装与使用