智慧北京:滑动图片touch拦截的控制

来源:互联网 发布:代理商管理系统源码 编辑:程序博客网 时间:2024/04/28 21:30

1、上次的实现顶部图片加载后出现了一个BUG,即滑动图片时,变成了对上面的title的滑动
2、解决这个BUG:实现touch拦截。不让title滑动啦。
touch机制:

这里写图片描述

PicViewPager.java

package huaxa.it.zhihuidemo.widget;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.KeyEvent;import android.view.MotionEvent;/** * @项目名: ZhiHuiDemo * @包名: huaxa.it.zhihuidemo.widget * @类名: PicViewPager * @创建者: 黄夏莲 * @创建时间: 2016年11月25日 ,下午11:10:19 *  * @描述:请求父容器不拦截Touch的ViewPager */public class PicViewPager extends ViewPager{    private int mSX;    private int mEX;    private int mMX;    public PicViewPager(Context context)    {        super(context);        // TODO Auto-generated constructor stub    }    public PicViewPager(Context context, AttributeSet attrs)    {        super(context, attrs);        // TODO Auto-generated constructor stub    }    @Override    public boolean dispatchTouchEvent(MotionEvent ev)    {        int action = ev.getAction();        switch (action)        {            case MotionEvent.ACTION_DOWN:                // 父亲不阻止孩子的touch事件,即孩子自己响应touch事件                requestDisallowInterceptTouchEvent(true);                mSX = (int) (ev.getX() + 0.5f);                break;            case MotionEvent.ACTION_MOVE:                mEX = (int) (ev.getX() + 0.5f);                mMX = mEX - mSX;                int position = getCurrentItem();                // 在第一张图片时:                // mMX>0从左向右,mMX<0从右往左,阻止孩子的touch事件,让父亲自己响应touch事件                if (position == 0)                {                    //mMX>0看到左边,mMX<0看到右边                    if (mMX > 0)                    {                        // 父亲阻止孩子的touch事件,父亲响应touch事件                        requestDisallowInterceptTouchEvent(false);                    } else                        // 父亲不阻止孩子的touch事件,即孩子自己响应touch事件                        requestDisallowInterceptTouchEvent(true);                } else if (position > 0                        && position < getAdapter().getCount() - 1)                {                    // 父亲不阻止孩子的touch事件,即孩子自己响应touch事件                    requestDisallowInterceptTouchEvent(true);                } else                {                    if (mMX > 0)                    {                        // 父亲不阻止孩子的touch事件,即孩子自己响应touch事件                        requestDisallowInterceptTouchEvent(true);                    } else                        // 父亲阻止孩子的touch事件,父亲响应touch事件                        requestDisallowInterceptTouchEvent(false);                }                break;            case MotionEvent.ACTION_UP:                break;            default:                break;        }        return super.dispatchTouchEvent(ev);    }}

news_list_pager.xml
将原先的ViewPager改成huaxa.it.zhihuidemo.widget.PicViewPager

0 0
原创粉丝点击