如何解决使用ViewDragHelper,实现可拖动控件时,控件不能拖动和不能监听问题?

4 篇文章 0 订阅
1 篇文章 0 订阅

如何解决使用ViewDragHelper,实现可拖动控件时,控件不能拖动和不能监听问题?

问题一:开始时,我直接使用百度上一些人的代码,结果发现控件根本就不能拖动?
比如:

http://blog.csdn.net/lmj623565791/article/details/46858663
http://www.tuicool.com/articles/UFRNfav

解决方法:
在继承ViewDragHelper.Callback 的类中添加如下代码:

@Override
        public int getViewHorizontalDragRange(View child)
        {
            return getMeasuredWidth()-child.getMeasuredWidth();
        }

        @Override
        public int getViewVerticalDragRange(View child)
        {
            return getMeasuredHeight()-child.getMeasuredHeight();
        }

问题二:如果控件可以拖动了,但是不能监听功能失效?

解决方法:看看onInterceptTouchEvent()是否拦截到触摸事件,看看onTouchEvent()是否`毁拦截到的触摸事件。

@Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        final int action = MotionEventCompat.getActionMasked(ev);
        if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) {
            mDragHelper.cancel();
            return false;
        }
        /**
         * 检查是否可以拦截touch事件 
         * 如果onInterceptTouchEvent可以return true 则进一步执行onTouchEvent
         */

        return mDragHelper.shouldInterceptTouchEvent(ev); //这里一直返回false,结果控件不能拖动
//      return true;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        /**
         * 处理拦截到的事件 这个方法会在返回前分发事件
         */

        mDragHelper.processTouchEvent(ev);

        return true;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值