`
wwwjiandan
  • 浏览: 29187 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何实现自定义View中的双击事件

 
阅读更多
自定义View想要实现对双击事件的监听,必须实现android.view.GestureDetector.OnGestureListener接口,具体实现代码如下:

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.widget.LinearLayout;
import android.widget.TextView;

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;  
  }  
 
}  
分享到:
评论

相关推荐

    Android 自定义View实现单击和双击事件的方法

    自定义View, 1. 自定义一个Runnable线程TouchEventCountThread , 用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面的线程 3. 自定义一个Handler, 在TouchEventHandler 中 处理 统计到的点击...

    Android自定义view,实现多画面播放器

    最后,项目中的VideoViewDemo可能是实现这个功能的示例代码,包含了自定义View的实现和相关逻辑。通过阅读和学习这个代码,可以深入理解多画面播放器的实现细节。 总的来说,创建一个Android自定义多画面播放器需要...

    FullCalendar扩展双击事件

    本文将深入探讨如何在FullCalendar中实现双击事件功能,包括源码修改和扩展方法,以兼容不同版本。 ### 1. 源码版双击事件 在源码版FullCalendar中添加双击事件功能,你需要直接修改FullCalendar的核心代码。首先...

    自定义view点击事件的接口回调

    3. 处理点击事件:在自定义View的`onTouchEvent`方法中,我们检测ACTION_UP事件,当用户手指抬起时,调用接口中的方法,传递当前的View对象。 ```java @Override public boolean onTouchEvent(MotionEvent event) {...

    Android-一个可以实现单指移动双击缩放双指缩放的View

    在这个场景中,我们关注的是一个名为"RikkaScalableView"的自定义View,它实现了三个核心功能:单指移动、双击缩放以及双指缩放。这些功能对于构建交互丰富的应用,特别是图片查看器或地图应用,非常实用。 首先,...

    android view 单击、双击和移动事件处理----TestViewEvent

    本文将深入探讨如何在Android中处理View的单击、双击以及移动事件,以实现更佳的用户体验。我们将通过一个名为"TestViewEvent"的例子来阐述这些概念。 首先,我们要了解Android中的基本事件监听器。在Android中,...

    qt中的treeView的右击事件和双击事件

    本篇文章将详细讲解如何在Qt中实现`QTreeView`的右键点击事件以及双击事件。 首先,让我们了解`QTreeView`的基本用法。`QTreeView`是`QAbstractItemView`的子类,它提供了视图模型/视图架构,允许灵活的数据展示。...

    安卓UI布局相关-test(自定义View电量.rar

    9. **学习资源**:压缩包中的“JavaApk源码说明.txt”可能是对源码的简要说明,而“千万别双击.url”可能是一个链接,指向更多关于自定义View或电量显示的相关教程或示例代码。 通过以上步骤,我们可以创建出一个...

    自定义控件 imageview 双击显示红色边框

    在Android开发中,自定义...通过这种方式,我们成功地实现了自定义的ImageView,它可以响应双击事件并在双击后显示红色边框,再次双击时边框消失。这个功能不仅提高了用户交互的直观性,也使得应用的界面更加生动有趣。

    Android自定义View实现水面上涨效果

    在Android开发中,自定义View是一种常见的需求,用于实现独特的视觉效果或交互方式。本案例中,我们将讨论如何实现一个自定义View,该View能够展示水面上涨效果,包括圆形中的水位升高以及波纹效果。这个效果通常...

    安卓微信相关相关-高仿微信群头像拼图自定义view.zip

    【标题】"安卓微信相关相关-高仿微信群头像拼图自定义view.zip" 提供的是一个关于在Android平台上实现类似微信群聊头像拼接功能的自定义View的源码示例。这个项目可能包含了设计和实现这样一个功能所需要的全部或...

    实现自定义的弹出通知视图(Notification)-定制颜色、图标等

    最后,`Crouton-master`可能是一个包含`Crouton`库源代码的项目,`Crouton`是一个用于在Android应用中创建类似iOS风格的短暂通知的库,可以帮助开发者更方便地实现自定义通知。 总之,自定义Android通知不仅关乎...

    android:自定义长按/长点击事件

    要自定义长按事件,我们可以通过重写`View`类的方法或者使用`GestureDetector`来实现。这里我们将采用`GestureDetector`,因为它提供了一个更加灵活和可扩展的方式来处理各种手势。 1. **创建GestureDetector对象**...

    Android 实现双击

    在Android开发中,实现双击事件处理是一项常见的需求,它通常用于执行某个功能或切换界面状态。本篇文章将深入探讨如何在Android应用中实现双击功能,并提供相关的代码示例。 首先,我们要理解双击(Double Tap)的...

    自定义ViewGroup实现滑屏等动作

    在Android开发中,自定义ViewGroup是实现复杂交互和独特界面设计的重要手段。这篇博客“自定义ViewGroup实现滑屏等动作”显然探讨了如何利用自定义ViewGroup来实现滑动和其他动态效果,这对于增强用户体验和创新应用...

    基于ImageView的多点触控,双击放大缩小以及结合ViewPager的事件冲突

    本篇文章将深入探讨如何通过自定义控件ZoomImageView实现这些功能,并在结合ViewPager时处理可能的事件冲突。 首先,我们来看多点触控。多点触控是现代智能手机和平板设备的一个重要特性,它允许用户同时用两个或更...

    安卓多点触控手势操作相关-响应单击双击事件监听.rar

    总之,理解和实现多点触控手势,尤其是单击和双击事件监听,是安卓开发中的基础技能。通过阅读和学习这些源码,你可以深入理解事件处理机制,提升你的安卓应用开发能力。记得在实践中不断调试和优化,以确保代码的...

    Android手势识别和双击事件

    双击事件处理通常需要我们自定义逻辑,因为GestureDetector默认不支持双击。我们可以使用一个计时器和一个变量来跟踪连续两次点击的时间间隔。如果两次点击的时间差小于特定阈值,就可以认为是双击事件。以下是一个...

    Qt之控件双击重命名操作

    在Qt中,我们可以重载控件的`mouseDoubleClickEvent`函数来捕获双击事件。当用户双击控件时,这个函数会被调用。例如,如果我们有一个QLabel控件,我们可以这样做: ```cpp void MyLabel::mouseDoubleClickEvent...

Global site tag (gtag.js) - Google Analytics