给下拉刷新组件PullToRefresh ListView增加左右滑动手势的识别

泡在网上的日子 / 文 发表于2012-11-26 20:45 次阅读 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

归根结底

这个活应该同时借助onInterceptTouchEventonTouchEvent去完成

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

也就不会出于按下状态。

收藏 赞 (3) 踩 (4)
上一篇:开源免费的Android UI库及组件推荐
短短数年时间Android平台就已经形成了一个庞大而活跃的开发者社区。许多社区开发的项目业已进入成熟阶段,甚至可以用于商业的软件生产中,且不用担心质量问题。 本文编译自 androiduipatterns ,意在分享一些免费、开源的Android UI库及组件资源。 一、UI组
下一篇:android下拉刷新列表实现(pull to refresh)
android中提供了ListView控件,listview能够为我们展现丰富的内容,有时候我们为了提升用户体检,需要更炫而且更好用户体验的效果,pull to refresh(下拉刷新列表效果)就应运而生了。 pull to refresh更多的应用于获取最新的内容,比如新浪微博、腾讯微博