左滑删除按钮的新思路

原创 2016年05月31日 16:02:21
在看了gouyuhua2008的高仿微信对话列表滑动删除效果后,记录下大致的思路。
大概一年半以前有不少app加入了列表项左滑删除的功能,个人觉得这个功能很不错,就试着去写个demo实现了一下。
回忆了一下当时实现的过程,步骤主要有三:
1.重写ListView的拦截事件,在move处判断是左右移动,上下移动,还是点击范围内的移动。判断是上下移动就拦截,否则不拦截,让ItemView去处理事件。
2.在ItemView的OnTouchEvent里处理左右滑动和点击范围内的移动,在Up的时候判断是点击范围内移动则当点击事件处理。
3.通过scroller处理左右滑动,并且在点击的时候回调点击事件。


这样可以解决ListView和ItemView的滑动,并且可以处理单击事件。

但是这样有一个很大的弊端,就是单击事件我是通过在move的时候move的dx和dy很小,此时up我当作单击处理,但是在longClick的时候就得用更麻烦的逻辑去处理。

原因就是处理了滑动冲突,触摸事件被onTouchEvent里消费了,所以ItemView无法处理。


在看了一篇博客后,发现一个新思路。

在ItemView实现一个public方法,后续被ListView调用。


就是所有的触摸事件全都交给ListView中的onTouchEvent去处理。在onTouchEvent通过pointToPosition(x, y)去获得item在列表的位置,但是这个动作需要之前就在adapter的数据对象里保存这个ItemView


这个时候获取到这个ItemView,再对ItemView调用之前实现的方法。
整个过程都是在ListView的onTouchEvent中完成的,所以也不需要去解决什么滑动冲突,而且逻辑很清晰,在ListView中改变了一个Item而已,ViewGroup对子View的改变一样,不涉及事件的分发。


blog代码地址:http://blog.csdn.net/gouyuhua2008/article/details/17584033

相关文章推荐

左旋转字符串新思路

题目描述: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。 请实现字符串左旋转的函数,要求对长度为n的字符串操作的...

新思路NCRE2013 序列号

  • 2014年03月04日 21:04
  • 238B
  • 下载

多线程并发处理的新思路:Parallel的使用

今天偶然接触到一个新的知识点,虽然.Net 4 里面早就提出来了,但是我真的不知道,还一直Backgroundwork玩的不亦乐乎,这个Share出来大家共享一下 ~ 我顺便截了几个评论过来: ...

利用GDAL进行多项式几何校正校正新思路

从网上查看很多关于几何校正的代码,不过好像基本上都差不多,下载下来调试基本上都是说说而已,根本没法真正做到几何校正的目的。好多人也在怀疑GDAL到底能不能做几何精校正,经过自己的努力,我发现,其实只要...

新思路二级office

  • 2016年09月17日 13:58
  • 31.28MB
  • 下载

中国电子报:中国IC业不创新思路没出路

本报记者 陈炳欣 2013年中国IC行业在资本运作层面出现了一个小高潮:9月底澜起科技在美国Nasdaq成功上市,成为过去10年在美国上市的第4家中国集成电路设计企业,也是近3年来在美国上市的唯...
  • wxzking
  • wxzking
  • 2013年11月06日 08:53
  • 3449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:左滑删除按钮的新思路
举报原因:
原因补充:

(最多只允许输入30个字)