Android手势监听(GestureDetector类)

public class GestureTest extends Activity implements OnClickListener, OnGestureListener {
	// 定义手势检测器实例
	GestureDetector detector;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity10_layout);
		// 创建手势检测器
		detector = new GestureDetector(this, this);
	}

	// 将该Activity上的触碰事件交给GestureDetector处理
	@Override
	public boolean onTouchEvent(MotionEvent me) {
		return detector.onTouchEvent(me);
	}

	@Override
	public boolean onDown(MotionEvent arg0) {
		Toast.makeText(this, "正在按下", Toast.LENGTH_LONG).show();
		return false;
	}

	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
		Toast.makeText(this, "正在抛掷", Toast.LENGTH_LONG).show();
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {
		Toast.makeText(this, "正在长按", Toast.LENGTH_LONG).show();
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
		Toast.makeText(this, "正在滑动", Toast.LENGTH_LONG).show();
		return false;
	}

	@Override
	public void onShowPress(MotionEvent e) {
		Toast.makeText(this, "正在按住", Toast.LENGTH_LONG).show();
	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		Toast.makeText(this, "正在抬起", Toast.LENGTH_LONG).show();
		return false;
	}

	@Override
	public void onClick(View arg0) {

	}
}

其中onFling()参数的意义如下:

e1:手势起点的移动事件

e2:当前手势点的移动事件

velocityX: 每秒x轴方向移动的像素

velocityY: 每秒y轴方向移动的像素

其中onScroll()参数的意义如下:

distanceX:  等于e1的X值减去e2的X值,计算结果带正负号。

distanceY:  等于e1的Y值减去e2的Y值,计算结果带正负号。

时间: 2024-12-24 15:07:32

Android手势监听(GestureDetector类)的相关文章

Android手势监听类GestureDetector的使用

在使用自定义视图的时候,对触屏事件的处理是比不可少的,有能力的可以自己写代码处理,这样更加的灵活.如果不想这么麻烦,Android提供了一个手势监听类GestureDetector,可以供我们使用.GestureDetector使用很方便,提供了单击,双击,长按等操作的处理,但是一般的定义界面都比较复杂,还用很多需要注意的地方,在这儿总结一下GestureDetector的使用. 首先新建一个空白的工程,主界面的layout中只需要添加一个按钮就行 <RelativeLayout xmlns:a

Android 手势监听学习总结

android的简单手势监听一般用onTouchListner接口,复杂手势监听一般用Detector来接替onTouch的处理. 手势监听后的处理涉及android坐标系统的问题. 多点触点则一般用event.getPointerCount()获取目前的触摸点的个数,用event.getX(index).event.getY(index)获得第index个触摸点的坐标. 一. 用View.OnTouchListener接口监听简单手势 在Android中,简单的手势监听用实现View类的Vie

Android手势监听

public class MainActivity extends Activity { /* * 要实现手指在屏幕上左右滑动的事件需要实例化对象GestureDetector,new * GestureDetector(MainActivity.this * ,onGestureListener);首先实现监听对象GestureDetector * .OnGestureListener,根据x或y轴前后变化坐标来判断是左滑动还是右滑动并根据不同手势滑动做出事件处理doResult(int *

Android开发之手势滑动(滑动手势监听)

在Android应用中,经常需要手势滑动操作,比如上下滑动,或左右方向滑动,处理手势滑动通常有两种方法:一种是单独实现setOnTouchListener监听器来,另一种是构建手势探测器 第一种方法,就是在要实现滑动的View中,实现OnTouchListener监听事件,然后判断KeyDonw和KeyUp 直接的位置距离来判断滑动方向,核心实现代码如下: /** * 设置上下滑动作监听器 * @author caizhiming */ private void setGestureListen

自定义View实现手势监听

下面是我自定义的view,主要是实现左右滑动 要实现手势监听,首先要实现OnGestureListener接口 其次是实例化一个GestureDetector:mDetector = new GestureDetector(context, this); 如果只是简单的实现OnGestureListener的方法,是不能实现监听效果, 我们要将onDown , onScroll的返回值改为true,自定义view的clickable属性为true. 除此之外,我们要重写自定义view的onTou

Android:监听ListView

本文目录 监听ListView点击事件 监听ListView滚动事件 监听ListView点击事件 使用监听器OnItemClickListener package com.example.testsend; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView.OnIte

android 应用监听输入法按键事件【比如搜索和回车键等】的整个流程分析

继承于InputMethodService类的服务代码如下: int keyCode = sKey.getKeyCode(); KeyEvent eDown = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, keyCode, 0, 0, 0, 0, KeyEvent.FLAG_SOFT_KEYBOARD); KeyEvent eUp = new KeyEvent(0, 0, KeyEvent.ACTION_UP, keyCode, 0, 0, 0, 0, Ke

Android怎样监听蓝牙耳机的按键事件

写在前面: 直接想要代码非常easy,你直接把滚动栏拉到最底端就能够看到.假设想要十分地了解为什么,那就依照我规划的一步一步来理解.下面測试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的使用 蓝牙耳机的使用说明书中都会有相关的具体使用说明,这里拣重点说明一下.除了电源开关,耳机上一般有三个键.例如以下所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/40

Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.ne