【学习笔记】"ListView滑动删除 ,仿腾讯QQ"(三)

今天继续学习“鸿祥_”大神的写的“ListView滑动删除,仿腾讯QQ” 。

今天,我准备学习并理清QQListView的逻辑。

1.自定义ListView

先看看布局文件activity_main.xml

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <com.example.listviewitemslidedeletebtnshow.QQListView  
  7.         android:id="@+id/id_listview"  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content" >  
  10.     </com.example.listviewitemslidedeletebtnshow.QQListView>  
  11.   
  12. </RelativeLayout>  
这里采用了自定义的ListView,也就是QQListView。具体如何体现自定义ListView的优势需要在com.example.listviewitemslidedeletebtnshow.QQListView类中实现(这里主要是为了实现滑动删除)。

然后,我们将视线转到com.example.listviewitemslidedeletebtnshow.QQListView类中

  1. public class QQListView extends ListView  
  2. {
  3. //首先,定义一些属性
  4. //然后,定义构造函数,用PopupWindow显示“删除”按钮,并获得PopupWindow的宽高
  5. //然后,覆写dispatchTouchEvent和onTouchEvent方法;
  6. //然后,再写一些需要用到的方法;
  7. }
2. dispatchTouchEvent和 onTouchEvent究竟做了什么工作

这部分是进行了非常关键的操作(我理解了其中操作的实现,还不是非常理解在操作时是否有冲突)。

2.1 dispatchTouchEvent的功能

通过dispatchTouchEvent判断是否存在“从右到左的滑动”事件,并根据触摸点确定所在Item,然后获得Item所在View;

2.2 onTouchEvent的功能

对滑动事件进行处理,根据Touch处View的坐标确定mPopupWindow的显示位置,并以动画的形式进行显示。

3.其它

在这篇博文中还有很多值的学习的地方,比如接口的使用等等。我先把上面的这些消化后,再深入分析吧。



发布了78 篇原创文章 · 获赞 54 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/chjr1000/article/details/44001113