`

点击事件

 
阅读更多
简单的点击事件:
   
    public boolean onTouchEvent(MotionEvent ev) {
 
        int action = ev.getAction();
 
        switch (action) {
 
        case MotionEvent.ACTION_DOWN:
 
            Log.d(TAG, "---onTouchEvent action:ACTION_DOWN");
 
            break;
 
        case MotionEvent.ACTION_MOVE:
 
            Log.d(TAG, "---onTouchEvent action:ACTION_MOVE");
 
            break;
 
        case MotionEvent.ACTION_UP:
 
            Log.d(TAG, "---onTouchEvent action:ACTION_UP");
 
            break;
 
        case MotionEvent.ACTION_CANCEL:
 
            Log.d(TAG, "---onTouchEvent action:ACTION_CANCEL");
 
            break;
 
        }
 
        return true;
    }
    

处理较复杂的点击事件:
    新建一个类继承SimpleOnGestureListener,HahaGestureDetectorListener
可以实现以下event事件。

    boolean  onDoubleTap(MotionEvent e) 解释:双击的第二下Touch down时触发

    boolean  onDoubleTapEvent(MotionEvent e) 解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。

    boolean  onDown(MotionEvent e) 解释:Touch down时触发

    boolean  onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 解释:Touch了滑动一点距离后,up时触发。

    void  onLongPress(MotionEvent e) 解释:Touch了不移动一直Touch down时触发

    boolean  onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) 解释:Touch了滑动时触发。

    void  onShowPress(MotionEvent e) 解释:Touch了还没有滑动时触发
(与onDown,onLongPress比较 onDown只要Touch down一定立刻触发。 而Touchdown后过一会没有滑动先触发onShowPress再是onLongPress。 所以Touchdown后一直不滑动,onDown->onShowPress->onLongPress这个顺序触发。 )

     boolean  onSingleTapConfirmed(MotionEvent e)
     boolean  onSingleTapUp(MotionEvent e)
     解释:上面这两个函数都是在touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发。
     点击一下非常快的(不滑动)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
     点击一下稍微慢点的(不滑动)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed


2)在view的新建一个GestureDetector的对象。
    构造函数里 gestureDetector = new GestureDetector(new HahaGestureDetectorListener());
    然后在View的onTouchEvent里以下这样用,就可以在刚才1)弄的事件里写自己的代码了。
  
   view.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				
				return gestureScanner.onTouchEvent(event);
			}
		});
   


简单的例子:
public class touchGesture extends Activity implements OnGestureListener {       
  private LinearLayout main;       
  private TextView viewA;
  private GestureDetector gestureScanner;

  @Override  
  public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);   

    gestureScanner = new GestureDetector(this);   
    gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){  
      public boolean onDoubleTap(MotionEvent e) {  
        viewA.setText("-" + "onDoubleTap" + "-");  
        //双击时产生一次
        Log.v("test", "onDoubleTap");
        return false;  
      }
      public boolean onDoubleTapEvent(MotionEvent e) {  
        //双击时产生两次
        Log.v("test", "onDoubleTapEvent");
        return false;
      }  
      public boolean onSingleTapConfirmed(MotionEvent e) {  
        viewA.setText("-" + "onSingleTapConfirmed" + "-");  
        //短快的点击算一次单击
        Log.v("test", "onSingleTapConfirmed");
        return false;  
      }  
    }); 


    main = new LinearLayout(this);   
    main.setBackgroundColor(Color.GRAY);
    main.setLayoutParams(new LinearLayout.LayoutParams(320,480)); 
    main.setOrientation(LinearLayout.VERTICAL);

    viewA = new TextView(this);
    viewA.setBackgroundColor(Color.YELLOW);
    viewA.setTextColor(Color.BLACK);   
    viewA.setTextSize(16);
    viewA.setLayoutParams(new LinearLayout.LayoutParams(320,50));   
    main.addView(viewA);

    setContentView(main);   
  }

  @Override  
  public boolean onTouchEvent(MotionEvent me) {   
    return gestureScanner.onTouchEvent(me);   
  }   

  @Override  
  public boolean onDown(MotionEvent e) {   
    //viewA.setText("-" + "DOWN" + "-");   
    return true;   
  }   

  @Override  
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {   
    //viewA.setText("-" + "FLING" + "- "+velocityX + "- "+velocityY);   
    Log.v("test", "onFling "+e1.getX()+" "+e2.getX());
    return true;   
  }   

  @Override  
  public void onLongPress(MotionEvent e) {   
    //viewA.setText("-" + "LONG PRESS" + "-");   
  }   

  @Override  
  public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {   
    //viewA.setText("-" + "SCROLL" + "- "+distanceX + "- "+distanceY);   
    Log.v("test", "onScroll "+e1.getX()+" "+e2.getX());
    return true;   
  }   

  @Override  
  public void onShowPress(MotionEvent e) {   
    //viewA.setText("-" + "SHOW PRESS" + "-");   
  }

  @Override  
  public boolean onSingleTapUp(MotionEvent e) {   
    Log.v("test", "onSingleTapUp");
    //viewA.setText("-" + "SINGLE TAP UP" + "-"+ i++);   
    return true;   
  }   
  
}  

分享到:
评论

相关推荐

    Qt中QLabel单击事件响应

    然而,QLabel默认并不支持直接的点击事件处理,但我们可以利用Qt的信号和槽机制,对其进行扩展,使其能够响应单击事件。本文将深入探讨如何实现QLabel的单击事件响应,并通过具体的示例代码来演示这一过程。 首先,...

    js生成动态表格并为每个单元格添加单击事件的方法

    单击事件(`click`)是最基本的用户交互事件之一,当用户点击页面上的某个元素时,就会触发单击事件。在JavaScript中,我们可以通过为元素的单击事件绑定一个事件处理函数来响应用户的点击行为。 ### JavaScript...

    WPF Image 点击事件

    由于Image控件本身不直接提供点击事件,我们需要创建一个模拟的鼠标左键单击事件。这可以通过以下两种方法实现: 1. **使用MouseLeftButtonDown和MouseLeftButtonUp事件**: - `MouseLeftButtonDown`事件在鼠标...

    OD按钮单击事件下断点脚本.rar

    在OD按钮的单击事件下设置断点,意味着当用户点击这个按钮时,程序会在执行该事件处理函数之前暂停,这样开发者就能逐步执行代码,查看每一步的变化,找出潜在的问题或优化代码。 这个压缩包文件"OD按钮单击事件下...

    treeview的点击事件

    在本文中,我们将深入探讨`TreeView`控件的点击事件及其处理方法,以便在用户点击节点时执行相应的操作。 `TreeView`控件在用户界面上通常用于展示层次化的信息,例如文件系统目录、应用程序菜单或者数据库结构。...

    GridView的点击事件

    GridView点击事件主要涉及到两种:单击事件(ItemClick)和长按事件(ItemLongClick)。当用户点击或长按GridView中的一个项目时,我们可以监听这些事件,执行相应的操作,例如跳转到新的页面、显示详细信息或者...

    回车直接实现点击某按钮的效果即触发单击事件

    代码如下: //回车触发某按钮的单击事件 <input name=”” type=”text” class=”input_search fl” id=”searchkey” onkeydown=”globelQuery(event);”/> ”search_but xss=removed id=”globelSearch”>...

    js单击事件和双击事件并存绑定

    当单击事件发生时,设置一个定时器,在一段时间(如300毫秒)内如果未再次触发点击,就执行单击事件的处理代码。如果在这段时间内触发了第二次点击,则清除计时器并执行双击事件的处理代码: ```javascript var ...

    单击事件和触摸事件的区别.zip

    3. **交互体验**:单击事件更适合简单的点击操作,触摸事件更适合需要手势识别的交互,如滑动、捏合等。 4. **兼容性**:在触摸设备上,单击事件可能有延迟,因为系统会等待确认这不是一个触摸滚动操作,这被称为...

    易语言截获鼠标单击事件用于屏幕取色

    标签中的"截获鼠标单击事件用于"表明这个功能是通过捕获鼠标点击事件来触发屏幕取色操作的,而"易语言截获鼠标单击事件用于屏幕取色源码"则提示我们有一个具体的源代码实现可以参考。在压缩包内的"易语言截获鼠标...

    android listview单击事件

    本教程将深入探讨ListView的单击事件处理,以及如何在实际项目中实现这一功能。 首先,理解ListView的基本概念非常重要。ListView是一个可以滚动的视图,用于显示一系列的数据项,每个数据项对应一个列表项视图。...

    Layui组件Table绑定行点击事件和获取行数据的方法

    其中,Table组件是一个常用的数据展示组件,它不仅可以展示数据,还提供了丰富的交互功能,比如行点击事件的绑定和获取行数据。Layui的Table组件的使用是前端开发中非常基础且重要的技能,接下来详细解析如何在Layui...

    Android实现TextView部分文本监听单击事件

    本文将深入探讨如何在Android中实现TextView部分文本监听单击事件。 首先,我们要明白,Android原生的TextView并不直接支持对内部部分文本的监听。因此,我们需要采用一些技巧来达到目的。一种常见的方式是使用...

    C++实现WebBrowser控件中获取鼠标点击事件和超链接

    本篇文章将深入探讨如何在MFC程序中使用WebBrowser控件来实现鼠标点击事件的处理和超链接的获取。 首先,我们需要在MFC项目中添加WebBrowser控件。这通常通过在资源编辑器中拖放一个ActiveX控件并选择`{CLSID_...

    QTableWidget 绑定按钮及单击事件

    给QTableWidget 最后一列动态创建QPushButton,并绑定单击事件,获取按钮所在行的单元格中的内容。 双击表格中的行,可以获取行中单元格的数据。 点击按钮,可以获取选中行中单元格的数据。

    PyQt5 QLabel实现自定义鼠标点击事件

    # PyQt5 QLabel实现自定义鼠标点击事件 1. 继承QLabel类并重定义鼠标点击事件mousePressEvent; 2. 鼠标点击获取光标在标签内的坐标,显示在标签上; 3. 多个标签使用QGridLayout布局。

    模拟用户单击事件demo

    这个“模拟用户单击事件demo”可能是一个示例项目,展示了如何在不同页面之间传递参数,并根据接收到的参数来触发特定的点击事件。以下是这个话题的详细解释: 1. **页面跳转与URL参数传递**: - 当我们在网页上...

    java事件 按钮单击事件 实例

    本实例将深入探讨Java事件处理机制,特别是按钮的单击事件。在Java Swing或JavaFX库中,我们可以创建按钮并定义其单击行为。以下是关于这个主题的详细讲解。 首先,我们需要导入必要的Java Swing库,如`javax.swing...

    利用eval()函数给树节点统一添加单击事件实现新建选项卡功能

    这篇博客“利用eval()函数给树节点统一添加单击事件实现新建选项卡功能”探讨了一个具体的JavaScript编程技巧,如何通过eval()函数来处理用户交互,特别是针对树形结构数据的点击事件,进而实现新的选项卡功能。...

    javascript触发模拟鼠标点击事件

    有时我们需要在JavaScript中模拟用户的行为,比如模拟鼠标点击事件。这样可以无需用户直接交互即可触发事件处理函数。本文详细介绍了如何使用JavaScript来触发模拟的鼠标点击事件,并提供了IE浏览器和其他现代浏览器...

Global site tag (gtag.js) - Google Analytics