您的位置:首页 > 移动开发 > Android开发

android处理单击双击和滑动事件

2015-01-12 14:53 423 查看
android有处理鼠标动作的GestureDetector,使用起来也挺方便,几个常用事件你都可以找到接口接入处理:

单击、双击(比如双击放大)、滑动(比如翻页)

下面是简化的例子,参考并整合所得,来源参考页尾参考内容:

package com.aslibra.test;

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;   

  }   

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: