安卓中监听手指滑动手势不仅可以重写onTouch(),还可以通过安卓自带的Gesture手势类来判断,使用起来也比较简单易懂。
简单来说使用方法就两步:
1-创建GestureDetector手势检测器,并在创建时绑定监听
2-为应用程序的activity/特定组件,绑定事件监听器。在事件处理中
把对应activity/组件的onTouchEvent事件交给GestureDector处理
让要处理手势监听的Activity实现GestureDetector.OnGestureListener接口,重写其中的方法,
这些方法分别对应了不同的手势操作。在代码里有详细注释:
package com.chan.gesture;
import android.annotation.TargetApi;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
public class MainActivity extends AppCompatActivity
implements
GestureDetector.OnGestureListener {
//声明手势检测器
private GestureDetector gestureDetector;
//Android M以上可以使用
@TargetApi (Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*-1-初始化监听器,传入上下文参数和事件监听*/
gestureDetector = new GestureDetector (this,this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
/*-2-将这个Activity的触摸事件交给监听器处理*/
return gestureDetector.onTouchEvent(event);
}
@Override
/* 手指按下的一刻触发 */
public boolean onDown(MotionEvent e) {
Log.d("tag", "onDown");
return false;
}
@Override
/* 手指按在屏幕上,在按下的一刻,长按之前执行 ,即按下的时间既大于点击又小于长按*/
public void onShowPress(MotionEvent e) {
Log.d("tag", "onShowPress");
}
@Override
/* 手指离开触摸屏的时候触发 */
public boolean onSingleTapUp(MotionEvent e) {
Log.d("tag", "onSingleTapUp");
return false;
}
@Override
/* 手指滑动触发 */
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d("tag", "onScroll");
return false;
}
@Override
/* 手指长按 */
public void onLongPress(MotionEvent e) {
Log.d("tag", "onLongPress");
Intent intent = new Intent (MainActivity.this,Activity2.class);
startActivity (intent);
}
@Override
/* 手指抛掷(快速划屏幕后松开) */
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.d("tag", "onFling");
return false;
}
}
在每个重写的方法里添加了输出语句,然后运行起来在屏幕上滑动,点击等各种操作,最后总结出这些重写的方法调用时机与真实的手势操作直接的关系,如下:
点击: onDown--onSingleTapUp
长按未抬起: onDown-- onShowPress -- onLongPress
还未达到长按就抬起: onDown -- onShowPress -- onSingleTapUp
迅速滑动: onDown -- onScroll.... -- onFling
慢速拖动:onDown -- onScroll....
清楚了每个回调方法调用的时机后,就可以在相应的回调方法里进行一些操作。
本文介绍在安卓中如何使用GestureDetector类实现手势监听功能,包括创建手势检测器并绑定监听,以及为Activity绑定事件监听器。文章详细解释了各种手势操作对应的回调方法及其触发时机。
1502

被折叠的 条评论
为什么被折叠?



