使用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
也就不会出于按下状态。