今天继续学习“鸿祥_”大神的写的“ListView滑动删除,仿腾讯QQ” 。
今天,我准备学习并理清QQListView的逻辑。
1.自定义ListView
先看看布局文件activity_main.xml:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <com.example.listviewitemslidedeletebtnshow.QQListView
- android:id="@+id/id_listview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
- </com.example.listviewitemslidedeletebtnshow.QQListView>
- </RelativeLayout>
然后,我们将视线转到com.example.listviewitemslidedeletebtnshow.QQListView类中
- public class QQListView extends ListView
- {
- //首先,定义一些属性
- //然后,定义构造函数,用PopupWindow显示“删除”按钮,并获得PopupWindow的宽高;
- //然后,覆写dispatchTouchEvent和onTouchEvent方法;
- //然后,再写一些需要用到的方法;
- }
这部分是进行了非常关键的操作(我理解了其中操作的实现,还不是非常理解在操作时是否有冲突)。
2.1 dispatchTouchEvent的功能
通过dispatchTouchEvent判断是否存在“从右到左的滑动”事件,并根据触摸点确定所在Item,然后获得Item所在View;
2.2 onTouchEvent的功能
对滑动事件进行处理,根据Touch处View的坐标确定mPopupWindow的显示位置,并以动画的形式进行显示。
3.其它
在这篇博文中还有很多值的学习的地方,比如接口的使用等等。我先把上面的这些消化后,再深入分析吧。