根据前面文章中ListView拖拽的实现原理,我们也是很容易实现推拽GridView的,下面我就以相同步骤实现基本的GridView拖拽效果。
因为GridView不用做分组处理,代码处理起来更简洁,而且原理前面已经讲解清楚了,代码中只是简单的过下,必要的地方简单的注释一下。
1.主界面DragGridActivity.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
2.主界面UI布局drag_grid_activity.xml.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
3.列表项布局drag_grid_item.xml.
?
|
4.自定义适配器DragGridAdapter,继承ArrayAdapter<String>.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | |
5.自定义视图类DragGridView,继承GridView.
?
|
6. 重写触控拦截事件方法onInterceptTouchEvent().
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
startDrag和stopDrag方法如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | |
7.重写onTouchEvent()方法.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
其中onDrag方法如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
8.放下影像,数据更新。
在onDrop方法中实现:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
10.最终效果图如下:
图1
图2
这篇文章也算是前面文章的一个补充和扩展。