本文主要是介绍关于手势(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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!