2011.07.01——— android GridView 长按事件不管用
参考:
http://lipeng88213.iteye.com/admin/blogs/1102048
问题:一个Gridiew的拖拽应用 在模拟器上 运行的没有一点问题
当我部署到平板电脑上 长按事件 不起作用了
研究:
public boolean onInterceptTouchEvent(MotionEvent ev) {
//这时候 你得到的x,y是在DragLayer下面得到的 这时候 容器 就是DragLayer了
int x = (int)ev.getX();
int y = (int)ev.getY();
switch(ev.getAction()){
case MotionEvent.ACTION_DOWN:
System.out.println("onInterceptTouchEvent down");
return false;
case MotionEvent.ACTION_MOVE:
System.out.println("onInterceptTouchEvent move");
return ture;
case MotionEvent.ACTION_UP:
System.out.println("onInterceptTouchEvent up");
System.out.println(111);
return false;
}
return super.onInterceptTouchEvent(ev);
}
我的Gridview的父类的onInterceptTouchEvent 是这样写的
在模拟器是没有问题的
我就想down up 我都向下传 但是move我会截获 进行一些操作
但是 在平板上 就出现问题了
onItemLongClick事件 根本就没有执行
后来 调试的时候 我发现
在平板电脑上长按时 down总是伴随着move
也就是说 onItemLongClick没有执行的原因就是这个move事件 里面我是return true的
解决:
1、建一个静态变量
//是否可以移动
public static boolean isMove = false;
2、修改onInterceptTouchEvent
public boolean onInterceptTouchEvent(MotionEvent ev) {
//这时候 你得到的x,y是在DragLayer下面得到的 这时候 容器 就是DragLayer了
int x = (int)ev.getX();
int y = (int)ev.getY();
switch(ev.getAction()){
case MotionEvent.ACTION_DOWN:
System.out.println("onInterceptTouchEvent down");
return false;
case MotionEvent.ACTION_MOVE:
System.out.println("onInterceptTouchEvent move");
break;
case MotionEvent.ACTION_UP:
System.out.println("onInterceptTouchEvent up");
System.out.println(111);
return false;
}
return StaticConstant.isMove;
}
3、在onItemLongClick里面改变isMove的值
StaticConstant.isMove = true;
4、在onTouchEvent up时改过来
StaticConstant.isMove = false;
结论:
GridVie onItemLongClick
按理说 只会触发 down
但是 在平板电脑中 当你触摸时 不可避免的会有move事件的
那么 为什么是 down move 后再onItemLongClick呢?
如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理。
注意 是之后和down一起传递下去
因为move紧跟着就发生了 所以 会和down一起传递给子view
所以 顺序是 down move move..... onItemLongClick
经测试 结论如下:
在平板电脑上:
onItemLongClick事件: down move LongClick up
onItemClick事件: down move up click
在模拟器上:
onItemLongClick事件: down LongClick up
onItemClick事件: down up click
分享到:
相关推荐
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。在许多应用中,用户可能需要对GridView中的元素进行交互操作,比如长按拖动和删除。这个例子就是关于如何在Android的GridView中...
首先,我们需要在GridView的适配器(Adapter)中添加对长按事件的支持。适配器是连接数据源和视图的关键,它负责填充每个GridView的单元格。我们可以通过重写`getView()`方法并在其中设置长按监听器来实现这一功能:...
在Android开发中,自定义GridView以实现长按拖动排序是一项常见的需求,特别是在构建具有可交互界面的应用中。本文将详细讲解如何实现这样一个功能,同时包括震动提示、固定"更多"项以及保存排序状态到数据库。 ...
GridView是Android开发中常用的一种控件,主要用于展示数据集,通常以网格的形式排列。它在各种应用中,如图片浏览、应用列表等场景下广泛应用。理解并掌握GridView的点击事件对于构建用户友好的界面至关重要。 ...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。这篇教程将深入探讨如何实现一个可拖拽的GridView,使用户能够通过长按并拖动来改变GridView中item的位置,实现item的实时交换...
在Android开发中,GridView是一种常见的布局管理器,用于展示数据集,通常用于创建网格状的视图。在很多应用中,我们可能需要为GridView的每个条目(Item)添加长按操作来显示额外的功能,例如删除按钮。本教程将...
"安卓Android源码——gridview分页效果.zip"这个压缩包可能包含了一个实现GridView分页效果的示例项目。HorizontalGridView是GridView的一个扩展,它使得数据可以横向滚动,提供了更丰富的界面展示方式。 首先,...
在Android开发中,GridView是一种非常常见的控件,用于展示数据集,通常以网格形式排列。在标题和描述中提到的“Gridview 长按可拖动图片功能!可长按删除,交换位置”是一个高级功能,涉及到触摸事件处理、自定义...
在Android开发中,GridView是一种常用的布局管理器,它允许我们以网格的形式展示数据集。"GridView长按显示删除按钮"的实现是常见的功能需求,通常用于数据操作如编辑或删除。这个功能增强了用户体验,使得用户可以...
在Android开发中,有时我们希望实现类似iOS的交互效果,比如“仿iOS抖动单行GridView长按显示删除图标”。这种功能通常用于提供用户一种直观的编辑方式,让他们可以通过长按元素并显示删除图标来删除不需要的项目。...
在本主题“GridView(长按拖动)”中,我们将深入探讨如何实现GridView的一项高级特性——长按拖动功能,以及如何设置可移动和不可移动的区域。 在Android开发中,实现GridView的长按拖动功能需要通过以下步骤: 1. ...
这个“Android源码——GridView拖拽实例源码_new_07.7z”压缩包包含了实现GridView拖拽功能的示例代码,对于学习如何增强用户交互体验非常有帮助。 GridView的基础知识: 1. **定义**:GridView继承自AbsListView,...
"安卓Andriod源码——gridview分页效果.zip"这个压缩包的学习可以帮助开发者理解和实现Android中的GridView分页效果,同时也能掌握HorizontalGridView的使用,提升Android应用的交互体验。实际开发时,应根据项目...
首先,我们需要自定义一个GridView类,继承自Android的GridView,并重写其触摸事件处理。在`onTouchEvent`方法中,我们需要检测用户的长按操作。当用户长按时,我们可以通过`ACTION_DOWN`和`ACTION_MOVE`事件来识别...
总结来说,“gridview单击选中长按拽动”涉及了Android开发中的GridView控件、点击事件监听、长按事件监听、拖放API的使用以及多选状态的管理。实现这样的功能需要对Android UI和事件处理有深入的理解,并能够灵活地...
这个"Android源码——GridView拖拽实例源码_new_07.zip"压缩包提供了一个关于GridView拖拽功能的具体实现示例。在本文中,我们将深入探讨GridView的拖拽功能及其在Android开发中的应用。 首先,我们需要理解...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。当我们处理大量数据时,分页加载可以提高应用性能,减少内存消耗,并提供更好的用户体验。本篇文章将详细讲解如何在Android中利用...
这个"安卓Android源码——gridview分页效果.rar"文件很可能是包含了一个实现GridView分页效果的示例项目。分页在大数据量展示时尤为重要,因为它提高了用户体验,避免一次性加载大量数据导致应用性能下降或内存溢出...