android listview 左右滑动手势的监听,给下拉刷新组件PullToRefresh ListView增加左右滑动手势的识别...

使用Android-PullToRefresh这个插件来展示列表

但是想增加左右滑动的手势的识别

目前是这么实现的:listView = pullToRefreshListView.getRefreshableView();

listView.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

eventConsumed = false;

gd.onTouchEvent(event);//里面会修改eventConsumed变量

return eventConsumed ? true : false;

}

});

这么做大致上能够达到效果

但有一个问题,就是有一个item会处于按下状态

如何才能更好的达到效果呢?

分析

item会处于按下状态是因为gd.onTouchEvent(event);在左右滑动时会消化掉MotionEvent.ACTION_UP

归根结底

这个活应该同时借助onInterceptTouchEvent和onTouchEvent去完成

onInterceptTouchEvent如果返回true就能偷走事件,不往下传给item

但PullToRefreshListView中把它们设成了final不许修改

所以得做个小手术,将final去掉

然后就可以添加自己的手势支持:onliners = new PullToRefreshListView(this, getAttributeSet4TagFromXml(R.layout.part_onliners,

"com.handmark.pulltorefresh.library.PullToRefreshListView")) {

@Override

public boolean onInterceptTouchEvent(MotionEvent event) {

boolean s = super.onInterceptTouchEvent(event);

listViewEventConsumed = false;

gd.onTouchEvent(event);

return listViewEventConsumed ? listViewEventConsumed : s;

}

@Override

public boolean onTouchEvent(MotionEvent event) {

boolean s = super.onTouchEvent(event);

return listViewEventConsumed ? false : s;

}

};

这样在左右滑动被截获时事件不会进一步传到item

也就不会出于按下状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值