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;
}

}

更多相关文章

  1. Android 监听长时单击(OnLongClickListener)
  2. 单击Button 更改屏幕方向
  3. 第三十六天 一乐在其中—Android的按钮单击事件及监听器的实现方
  4. Android通过onTouch事件实现单击,双击,长按
  5. Android个人所得税计算器
  6. android 单击 切换图片 --- 注意图片大小
  7. Android实现TextView部分文本监听单击事件
  8. Android之UI学习篇三:TextVeiw单击文字链接弹出Activity

随机推荐

  1. c语言中continue用法是什么?
  2. c语言&&什么意思?
  3. strcat 在 C 语言中是什么意思?
  4. c语言strlen用法详解
  5. C语言中的字符串比较函数是什么
  6. C语言 strchr 函数用法
  7. putchar在c语言中是什么意思
  8. C语言注释方法有几种?
  9. c语言的阶乘函数如何用递归定义?
  10. 一定要了解的c语言中&与&&的区别