关于手势(Gesture)

2024-05-07 04:08
文章标签 手势 gesture

本文主要是介绍关于手势(Gesture),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

概念:所谓手势,其实是指用户手指或触摸笔在触摸屏上的连续触碰行为,比如在屏幕上从左至右划出的一个动作,就是手势,再比如在屏幕上画出一个圆圈也是手势。手势这种连续的触碰会形成某个方向上的移动趋势,也会形成一个不规则的几何图形。Android对两种手势行为都提供了支持。

对于第一种手势行为而言,Android提供了手势检测,并为手势检测提供了相应的监听器。

对于第二种手势行为,Android允许开发者添加手势,并提供了相应的API识别用户手势。

下面先看手势检测:

Android为手势检测提供了一个GestureDetector类,即手势检测器。创建检测器对象需要传入一个GestureDetector.OnGestureListener监听器实例,该监听器包含如下方法:

下面通过一个简单实例来测试这些方法是在什么情况下触发的,代码如下:

Activity:

package com.lovo.activity;import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.widget.TextView;public class MainActivity extends Activity implements OnGestureListener {// 定义手势检测器实例private GestureDetector detector;// 定义TextView对象TextView tv1, tv2, tv3, tv4, tv5, tv6;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取TextView实例tv1 = (TextView) findViewById(R.id.tv1);tv2 = (TextView) findViewById(R.id.tv2);tv3 = (TextView) findViewById(R.id.tv3);tv4 = (TextView) findViewById(R.id.tv4);tv5 = (TextView) findViewById(R.id.tv5);tv6 = (TextView) findViewById(R.id.tv6);// 创建手势检测器detector = new GestureDetector(this);}// 将该Activity上的触碰事件交给GestureDetector处理@Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();if (action == MotionEvent.ACTION_DOWN) {tv1.setText("");tv2.setText("");tv3.setText("");tv4.setText("");tv5.setText("");tv6.setText("");}return detector.onTouchEvent(event);}@Overridepublic boolean onDown(MotionEvent e) {tv1.setText("执行了onDown");return false;}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {tv2.setText("执行了onFling");return false;}@Overridepublic void onLongPress(MotionEvent e) {tv3.setText("执行了onLongPress");}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) {tv4.setText("执行了onScroll");return false;}@Overridepublic void onShowPress(MotionEvent e) {tv5.setText("执行了onShowPress");}@Overridepublic boolean onSingleTapUp(MotionEvent e) {tv6.setText("执行了onSingleTapUp");return false;}}

布局XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/tv1"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv2"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv3"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv4"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv5"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv6"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>



 

这篇关于关于手势(Gesture)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966281

相关文章

【HarmonyOS】头像圆形裁剪功能之手势放大缩小,平移,双击缩放控制(三)

【HarmonyOS】头像裁剪之手势放大缩小,平移,双击缩放控制(三) 一、DEMO效果图: 二、开发思路: 使用矩阵变换控制图片的放大缩小和平移形态。 通过监听点击手势TapGesture,缩放手势PinchGesture,拖动手势PanGesture进行手势操作的功能实现。 通过对矩阵变换参数mMatrix的赋值,将矩阵变换参数赋值给image控件。实现手势操作和图片操作的同步。

Android多点触摸手势滑动的一种简单方法

GestureDetector_left = new GestureDetector(this,new GestureListener_left());       //左部  手势监听(内部类) GestureDetector_right = new GestureDetector(this,new GestureListener_right());   //右部  手势监听(内部类)

android-Intent,Injector,Template,Adapter,Validation,Gesture,Game,Game Engine,Bluetooth...

Intent Intent PhotoPicker 图片选择 & 图片预览https://github.com/donglua/PhotoPicker Injector AndroidAnnotations Fast Android Development. Easy maintainance. https://github.com/excilys/androidannotations

【iOS】状态栏颜色和pop手势

说明 UINavigationController 管理状态栏颜色,需要转发给单个控制器 class NavController: UINavigationController {override func viewDidLoad() {super.viewDidLoad()}override var preferredStatusBarStyle: UIStatusBarStyle {let

鸿蒙开发入门day16-拖拽事件和手势事件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 拖拽事件 概述 拖拽流程 ​手势拖拽 ​鼠标拖拽 拖拽背板图 开发步骤 通用拖拽适配 多选拖拽适配 手势事件 gesture(常规手势绑定方法) priorityGesture(带优先级的手势绑定方法) parallelGesture(并行手势绑定

手势密码(四)

之前写过3篇手势密码的demo,不过没有集成到真实的企业项目中,这几天正好领到一个手势密码项目,昨天刚好弄完,今天抽空整理下,目前还没有完善,有一些地方需要更改,不过基本的流程都可以跑通了 源码下载地址。。。。。 先看主界面的入口把、里面有2个button(一个是设置手势密码、一个是校验手势密码) activity_main.xml <RelativeLayout

手势密码(三)

源码地址下载 先看第一张图片的布局文件 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_paren

手势密码(二)

代码地址下载 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_

基于SVM的手势识别,SVM工具箱详解,SVM工具箱使用注意事项

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于支持向量机SVM的手势识别 代码 结果分析 展望 摘要 基于支持向量机SVM的手势识别,SVM原理,SVM工具箱详解,SVM常见改进方法 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)

如何处理多点触控、滑动手势,以及如何通过 `MotionEvent` 获取触摸的详细信息(如坐标、压力、手指的数量等)

处理多点触控(multi-touch)、滑动手势(scroll gestures)以及通过 MotionEvent 获取触摸的详细信息是自定义视图开发中的重要技能。以下是详细的讨论和示例代码,展示如何处理这些触控事件。 1. 处理多点触控 在 Android 中,MotionEvent 类提供了触摸事件的详细信息,包括多点触控的数据。通过 MotionEvent,你可以处理每个触摸点的信息,如