Android屏幕手势检测的实现代码

 更新时间:2017年11月08日 11:28:17   作者:_彼岸雨敲窗_  
这篇文章主要介绍了Android屏幕手势检测的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

Android 关于手势的操作提供两种形式:一种是针对用户手指在屏幕上划出的动作而进行移动的检测,这些手势的检测通过android提供的监听器来实现;另一种是用 户手指在屏幕上滑动而形成一定的不规则的几何图形(即为多个持续触摸事件在屏幕形成特定的形状);本文给大家分享android屏幕手势检测的实现代码。

Android屏幕手势检测的原理是由于触摸事件的检测与识别比较繁琐,因此Android提供了手势检测器帮助开发者识别手势。利用手势检测器可以自动辨别常用的几个手势事件,如点击、长按、滑动等,从而使开发者专注于业务逻辑,不必在手势的行为判断上绞尽脑汁。

layout/activity_gesture_detector.xml界面布局代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:paddingTop="10dp">
  <TextView
    android:id="@+id/tv_gesture"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="这里查看手势结果"
    android:textColor="@color/black"
    android:textSize="17sp" />
</LinearLayout>

GestureDetectorActivity.java逻辑代码如下:

package com.fukaimei.gesturedetector;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.TextView;
import com.fukaimei.gesturedetector.util.DateUtil;
public class GestureDetectorActivity extends AppCompatActivity {
  private TextView tv_gesture;
  private GestureDetector mGesture;
  private String desc = "";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gesture_detector);
    tv_gesture = (TextView) findViewById(R.id.tv_gesture);
    mGesture = new GestureDetector(this, new MyGestureListener());
  }
  public boolean dispatchTouchEvent(MotionEvent event) {
    mGesture.onTouchEvent(event);
    return true;
  }
  final class MyGestureListener implements GestureDetector.OnGestureListener {
    @Override
    public final boolean onDown(MotionEvent event) {
//     desc = String.format("%s%s 您按下来了\n", desc, DateUtil.getNowTime());
//     tv_gesture.setText(desc);
      //onDown的返回值没有作用,不影响其它手势的处理
      return true;
    }
    @Override
    public final boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
      float offsetX = e1.getX() - e2.getX();
      float offsetY = e1.getY() - e2.getY();
      if (Math.abs(offsetX) > Math.abs(offsetY)) {
        if (offsetX > 0) {
          desc = String.format("%s%s 您向左滑动了一下\n", desc, DateUtil.getNowTime());
        } else {
          desc = String.format("%s%s 您向右滑动了一下\n", desc, DateUtil.getNowTime());
        }
      } else {
        if (offsetY > 0) {
          desc = String.format("%s%s 您向上滑动了一下\n", desc, DateUtil.getNowTime());
        } else {
          desc = String.format("%s%s 您向下滑动了一下\n", desc, DateUtil.getNowTime());
        }
      }
      tv_gesture.setText(desc);
      return true;
    }
    @Override
    public final void onLongPress(MotionEvent event) {
      desc = String.format("%s%s 您长按了一下下\n", desc, DateUtil.getNowTime());
      tv_gesture.setText(desc);
    }
    @Override
    public final boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
      return false;
    }
    @Override
    public final void onShowPress(MotionEvent event) {
    }
    @Override
    public boolean onSingleTapUp(MotionEvent event) {
      desc = String.format("%s%s 您轻轻点了一下\n", desc, DateUtil.getNowTime());
      tv_gesture.setText(desc);
      //返回true表示我已经处理了,别处不要再处理这个手势
      return true;
    }
  }
}

Demo程序运行效果界面截图如下:

这里写图片描述

总结

以上所述是小编给大家介绍的Android屏幕手势检测的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android AccessibilityService实现微信抢红包插件

    Android AccessibilityService实现微信抢红包插件

    这篇文章主要介绍了Android AccessibilityService实现微信抢红包插件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android编程显示网络上的图片实例详解

    Android编程显示网络上的图片实例详解

    这篇文章主要介绍了Android编程显示网络上的图片,结合实例形式详细分析了Android显示网络图片的流程与具体操作技巧,需要的朋友可以参考下
    2016-10-10
  • Android变形(Transform)之Matrix用法

    Android变形(Transform)之Matrix用法

    Android的2D变形(包括缩放,扭曲,平移,旋转等)可以通过Matrix来实现,本文研究了一下;接下来就将我这俩天研究的东西和大家分享下,先来看看Matrix的用法感兴趣的你可不要错过了哈
    2013-02-02
  • Android升级支持库版本遇到的两个问题详解

    Android升级支持库版本遇到的两个问题详解

    安卓平台其中一个很牛逼的地方在于它支持各种不同的设备。从你的平板电脑,到你的手机,电视等,安卓无处不在。这篇文章主要给大家介绍了关于Android升级支持库版本遇到的两个问题,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • Android9.0 SystemUI 网络信号栏定制修改的流程解析

    Android9.0 SystemUI 网络信号栏定制修改的流程解析

    这篇文章主要介绍了Android9.0 SystemUI 网络信号栏定制修改的流程,本文通过图文实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Flutter实现渐变色加描边字体效果

    Flutter实现渐变色加描边字体效果

    这篇文章介绍了Flutter实现渐变色描边字体效果的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • Android检测url地址是否可达的两种方法

    Android检测url地址是否可达的两种方法

    今天小编就为大家分享一篇Android检测url地址是否可达的两种方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Android开发从相机或相册获取图片裁剪

    Android开发从相机或相册获取图片裁剪

    当我们需要上传图片时,想要裁剪成我们需要的尺寸大小,android手机都带有这个功能,很容易,那么此功能是如何实现的呢?下面小编给大家介绍Android开发从相机或相册获取图片裁剪,需要的朋友可以参考下
    2015-10-10
  • Android编程开发中的正则匹配操作示例

    Android编程开发中的正则匹配操作示例

    这篇文章主要介绍了Android编程开发中的正则匹配操作,结合具体实例形式分析了Android针对手机号、邮箱及IP的正则匹配操作相关实现技巧,需要的朋友可以参考下
    2017-06-06
  • android九宫格锁屏控件使用详解

    android九宫格锁屏控件使用详解

    这篇文章主要为大家详细介绍了android九宫格锁屏控件使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论