`
yzhong_sa
  • 浏览: 90068 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

listview onClick longClick onTouch三个事件的处理

阅读更多
int lastX, curX;
 private int totalMove = 0;
 private boolean firstDown = true;//开关
 int duration = 150;
 OnTouchListener listViewOnTouchListener = new OnTouchListener() {
  
  @Override
  public boolean onTouch(View v, MotionEvent event) {
   switch (event.getAction()) {
   case MotionEvent.ACTION_DOWN: {
    lastX = (int)event.getX();
    totalMove = 0;
    firstDown = false;
    
    return false;
   }
   case MotionEvent.ACTION_MOVE:{
    if (firstDown) {
     curX = (int) event.getX();
     totalMove = 0;
     firstDown = false;
    }
    curX = (int) event.getX();

    int delatX = curX - lastX;
    //if (delatX > 0) {
     totalMove += delatX;
     lastX = curX;
    //}
    return false;
   }
   case MotionEvent.ACTION_UP:{
    boolean result = false;
    if(totalMove > 20 ){
     //
     Log.e("right","right");
     totalMove = 0;
//things you shouold do here
     result = true;
    }
    if(totalMove < 0 && Math.abs(totalMove) > 20){
     Log.e("left","left");
     totalMove = 0;
//things you shouold do here

     result= true;
    }
    return result;
   }
   }
   return false;
   
  }
 };

listView.setOnTouchListener(listViewOnTouchListener );

 其他的onclickListener onLongClickListener 好普通 无需介绍

关键在于onTouchListener中 onDown的时候 返回false onCLICK 与longclick也会感应到这个动作,true就相反。。。然后在onMove的时候去统计移动的距离,设定一个滑动的敏感度,达到这个值就返回false 处理相应的操作,例如划屏更新UI。。。不过这个值就返回true让onclick的事件响应,同时设定一个duration时延给longclick事件 达到某个值的话 也直接返回true。。

 

没有直接的api方法让他们共存,在于我们如何使用而已。


 

分享到:
评论
3 楼 linhui9010 2013-11-14  
您好,我现在就是在listview上面加了ontouch,然后我想在上面是在点击一下的时候作跳转,然后现在就是我move了,但是停留了一会儿还是跳转了。

case MotionEvent.ACTION_UP: {
				boolean result = false;
				if (totalMove > 20) {
					//
					Log.e("right", "right");
					totalMove = 0;
					// things you shouold do here
					return result = true;
				}
				else if (totalMove < 0 && Math.abs(totalMove) > 20) {
					Log.e("left", "left");
					totalMove = 0;
					// things you shouold do here
					return result = true;
				}
				else{
					ListView view = (ListView) v;
					if (view != null && StringUtil.notEmpty(view.getTag())) {
						if (view.getTag().equals("first"))
							pressFirstListView();
						else if (view.getTag().equals("second"))
							pressSecondListView();
						else if (view.getTag().equals("third"))
							pressThirdListView();
						else if (view.getTag().equals("fourth"))
							pressFourthListView();
					}
					result = true;
				}
				return result;
			}
			}


2 楼 bawanglb 2012-02-29  
支持楼主,挺好
1 楼 大柳树 2011-06-23  
帅!!正好用到这!!

相关推荐

    在Android中ListView中添加两个点击事件

    里要分享的是在一个listview中添加两个点击事件的解决办法,...这样的好处就是既不去掉ListView的OnItemClick事件,而且又添加了一个新的事件。详细文章见 http://blog.csdn.net/huihuangui/article/details/6768629

    listview的事件处理

    本篇文章将深入探讨ListView的事件处理,特别是如何处理ListView与Button共存时焦点问题,以及在Adapter中实现接口来响应按钮点击,改变ListView中的数据。 首先,我们来解决“listview与button共存抢夺焦点问题”...

    ListView和Button点击事件冲突处理

    而Button作为ListView的一个子视图,其点击事件会被ListView的触摸事件处理机制所覆盖。因此,当用户点击Button时,ListView可能会误认为是滚动操作,从而导致Button的点击事件无法正常执行。 解决这个问题通常有...

    ListView和BaseAdapter搭配Button点击事件获取不同Item

    2. **自定义ListView Item布局**:在XML中设计一个ListView的Item布局,包含一个Button。例如,创建一个名为`list_item.xml`的布局文件: ```xml android:id="@+id/textView" android:layout_width="wrap_...

    ListView刷新和监听滚动事件选项事件的例子

    在Android开发中,ListView是一个非常重要的组件...通过查看和运行这个示例,你可以更直观地理解ListView的刷新、滚动监听和选项事件的处理。这样的实践将有助于你在实际开发中更好地运用ListView这一功能强大的组件。

    Android编程实现ListView中item部分区域添加点击事件功能

    需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为上下两部分,分别是白色的背景和蓝色的背景,现在需要只点击蓝色的背景,才能跳转到其他界面,解决方式如下:...

    Android中自定义ListView,解决scrollview嵌套listview 滑动事件冲突

    在ListView的滑动结束时,记得调用`requestDisallowInterceptTouchEvent(false)`,恢复父View的事件处理。 以上策略可以根据实际需求灵活选择。在提供的MyListView文件中,可能就包含了自定义ListView解决滑动冲突...

    事件处理ListView

    事件处理是ListView功能的一个关键部分,它使得用户可以与列表项进行交互。在这个主题中,我们将深入探讨"事件处理ListView"的相关知识点。 首先,`ListView`是Android SDK中的一个视图组件,它允许用户在一个垂直...

    android listview长按,单击各种事件捕捉

    首先,我们要创建一个自定义的Adapter,这个Adapter是ListView与数据源之间的桥梁,负责将数据转化为ListView可显示的View。在适配器中,我们需要重写`getView`方法,在这里可以添加事件监听器。 1. 单击事件: ...

    listView上增加button点击事件

    标题"listView上增加button点击事件"所涉及的核心知识点是如何在ListView的item中嵌入Button,并同时处理这两个元素的独立点击事件,避免事件冲突。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来...

    android listview 中button 事件处理

    本文用两种方法BaseAdapter 和SimpleAdapter分别实现三种情况。listview中有button事件的时候,针对不同的需求,响应不同的事件。只实现响应listview的点击事件。只响应listview中的button事件。两个事件都需要。

    Android-ListView中嵌套(ListView)控件兼容问题

    在Java代码中,可以为父`ListView`设置`setFocusable(false)`,以确保它不会获取焦点,进而使得触摸事件能够被正确地处理。这通常配合上面提到的XML属性一起使用。 #### 示例代码详解 下面是对示例代码的具体解释...

    Android Activity跳转和listview的使用

    在这个主题中,我们将深入探讨如何通过Intent和Bundle实现Activity间的参数传递和跳转,以及如何在ListView中设置Item的点击事件处理。 首先,Intent是Android系统中用于启动其他组件(如Activity、Service等)的...

    Listview中的Button实现点击事件

    1. **定义接口**:创建一个接口,例如`OnItemClickListener`,包含一个处理点击事件的方法,如`onItemClick()`。 2. **实现接口**:在父组件中实现这个接口,并在`onItemClick()`方法中编写点击事件的逻辑。 3. **...

    ListVIew适配器(item事件)

    理解和熟练掌握ListView的适配器以及item事件处理,对于提升Android应用的用户体验至关重要。在实际项目中,还可以结合ViewHolder模式优化性能,避免因为频繁的findViewById操作导致的性能问题。同时,适配器的灵活...

    listview item点击事件冲突问题

    总之,解决ListView item点击事件冲突问题需要对Android的事件传递机制有深入理解,并灵活运用各种策略来处理。合理地配置子View的可点击性和焦点性,以及正确处理手势和点击事件的冲突,都是解决问题的关键。同时,...

    listview两个点击时间的处理demo

    通常,ListView的单击事件很容易处理,但当一个Item内部需要响应多个独立的交互时,就需要更精细的事件分发。以下将详细介绍如何实现这个功能。 首先,我们来理解ListView的基本结构。ListView通常由Adapter驱动,...

    解决scrollView和listview滚动冲突,实现listview滑动到顶端和底部之后还能拖拽一定的距离,松开后返回

    这个过程可能需要对Android的触摸事件处理和滚动机制有深入理解,但通过实践,开发者可以更好地控制和优化界面的滚动行为。在实际项目中,可以参考已有的开源库,如`androidx.core.widget.NestedScrollView`和`...

    Android review listview 显示 单击事件

    本篇文章将深入探讨如何在Android中实现ListView的显示以及单击事件处理。首先,我们了解ListView的基本概念。 ListView是一个可滚动的视图,它能显示一个长列表,其中每个项目都由一个单独的View表示。ListView...

    自定义listview 圆角listviewitem 处理 选中背景处理

    本文将深入探讨如何实现自定义的圆角ListView项以及处理选中背景。 首先,我们需要了解ListView的工作原理。ListView通过Adapter来填充数据,并通过ViewHolder优化性能。Adapter负责将数据转化为View,然后ListView...

Global site tag (gtag.js) - Google Analytics