当前位置: 代码迷 >> 综合 >> Iwfu-安卓Gesture手势(1)-初步
  详细解决方案

Iwfu-安卓Gesture手势(1)-初步

热度:28   发布时间:2023-12-19 02:09:41.0

安卓中监听手指滑动手势不仅可以重写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 AppCompatActivityimplementsGestureDetector.OnGestureListener {
    //声明手势检测器private GestureDetector gestureDetector;//Android M以上可以使用@TargetApi (Build.VERSION_CODES.M)@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*-1-初始化监听器,传入上下文参数和事件监听*/gestureDetector = new GestureDetector (this,this);}@Overridepublic 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....

清楚了每个回调方法调用的时机后,就可以在相应的回调方法里进行一些操作。

下一篇:安卓Gesture手势(2)-实现多点触控控制图片的放大缩小。

  相关解决方案