当前位置: 移动技术网 > IT编程>移动开发>Android > Android屏幕手势检测的实现代码

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

山西万荣5p事件图片,曾仕强中国式管理,霸王神枪txt下载

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屏幕手势检测的实现代码,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网