`
hzy3774
  • 浏览: 993132 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Android手势识别和双击事件

 
阅读更多

安卓触摸屏的手势识别在很多时候会使用户操作更加方便:

实现原理主要是将该界面的onTouchEvent设置为GestureDetector的onTouchEvent:

具体实现代码:

1.在Activity中响应事件:

MainActivity.java

 

package com.hu.gesturedemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.widget.Toast;

public class MainActivity extends Activity  {

	GestureDetector gestureDetector = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		gestureDetector = new GestureDetector(this, new SimpleOnGestureListener(){
			
			@Override
			public boolean onFling(MotionEvent e1, MotionEvent e2,		//滑动事件
					float velocityX, float velocityY) {
				if(Math.abs(velocityX) > Math.abs(velocityY)){	//如果X偏移量大于Y偏移量
					if(velocityX > 0){
						Toast.makeText(MainActivity.this, "Right Fling", Toast.LENGTH_SHORT).show();
					}else{
						Toast.makeText(MainActivity.this, "Left Fling", Toast.LENGTH_SHORT).show();
					}
				}else{
					if(velocityY > 0){
						Toast.makeText(MainActivity.this, "Down Fling", Toast.LENGTH_SHORT).show();
					}else{
						Toast.makeText(MainActivity.this, "Up Fling", Toast.LENGTH_SHORT).show();
					}
				}
				return super.onFling(e1, e2, velocityX, velocityY);
			}
			
			@Override
			public boolean onDoubleTap(MotionEvent e) { 	//双击事件
				Toast.makeText(MainActivity.this, "On double Tap", Toast.LENGTH_SHORT).show();
				return super.onDoubleTap(e);
			}
		});
	}
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		return gestureDetector.onTouchEvent(event);
	}

}

 

 2.在View中响应事件

 MyView.java

package com.hu.gesturedemo;

import android.content.Context;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class MyView extends View{

	GestureDetector gestureDetector = null;
	
	public MyView(Context context) {
		super(context);
		gestureDetector = new GestureDetector(context, new SimpleOnGestureListener(){
			@Override
			public boolean onFling(MotionEvent e1, MotionEvent e2,		//滑动事件
					float velocityX, float velocityY) {
				if(Math.abs(velocityX) > Math.abs(velocityY)){	//如果X偏移量大于Y偏移量
					if(velocityX > 0){
						Toast.makeText(getContext(), "Right Fling", Toast.LENGTH_SHORT).show();
					}else{
						Toast.makeText(getContext(), "Left Fling", Toast.LENGTH_SHORT).show();
					}
				}else{
					if(velocityY > 0){
						Toast.makeText(getContext(), "Down Fling", Toast.LENGTH_SHORT).show();
					}else{
						Toast.makeText(getContext(), "Up Fling", Toast.LENGTH_SHORT).show();
					}
				}
				return super.onFling(e1, e2, velocityX, velocityY);
			}
			
			@Override
			public boolean onDoubleTap(MotionEvent e) { 	//双击事件
				Toast.makeText(getContext(), "On double Tap", Toast.LENGTH_SHORT).show();
				return super.onDoubleTap(e);
			}
			
		});
		
		this.setClickable(true);
		this.setOnTouchListener(new OnTouchListener() {
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				return gestureDetector.onTouchEvent(event);
			}
		});
	}
}

 



 

  • 大小: 10.2 KB
分享到:
评论

相关推荐

    android手势库识别

    - **阈值调整**:为了提高识别准确性,可以调整手势识别的阈值,包括时间阈值(手势绘制的最短时间)和精度阈值(点之间的最大距离)。 - **平滑处理**:通过对用户手势的平滑处理,可以减少噪声,提高识别率。 7...

    android手势识别

    本文将深入探讨Android手势识别的基础知识,包括基本概念、实现机制、常见手势以及如何在应用程序中集成手势识别功能。 一、手势识别基础 1. 基本概念:手势识别是指系统能够识别并解析用户在触摸屏上绘制的特定...

    Qt for android触摸手势事件QGestureEvent

    Qt提供了一套完整的手势框架,用于识别和处理这些触摸事件,包括滑动(Swipe)、点击(Tap)、双击(Double Tap)、捏合(Pinch)、旋转(Rotate)等。这些手势可以映射到特定的QGesture对象,由QGestureEvent类来...

    Android 手势识别的API简单使用

    本文将详细介绍如何使用Android API中的GestureOverlayView、GestureDetector和SimpleOnGestureListener来实现基本的手势识别功能。 首先,我们来看`GestureOverlayView`。这是一个可以覆盖在其他View之上的特殊...

    Android应用源码之(触屏手势识别).zip

    在Android应用开发中,触屏手势识别是提升用户体验的关键技术之一。...通过对这些源码的学习,开发者可以深入理解Android手势识别机制,并将这些技术应用到自己的项目中,为用户提供更加丰富和自然的交互体验。

    android触屏手势识别

    在Android开发中,触屏手势识别是提升用户体验和交互性的重要技术。手势识别允许用户通过在屏幕上绘制特定的图案或动作来执行相应的操作,比如滑动、点击、双击、长按、捏合等。本篇文章将深入探讨Android触屏手势...

    android手势及多点触控事件学习资料

    总结,Android手势识别和多点触控事件处理为开发者提供了丰富的交互方式,极大地增强了用户体验。理解并熟练掌握这些技术,对于开发出更具吸引力的Android应用至关重要。提供的DEMO文件`gesture.rar`和`motionevent....

    Android手势识别算法,除识别基本点击,双击,长按操作,主要用于识别上,下,左,右等等

    通过以上讲解,我们可以看到Android手势识别算法在提升用户体验和增加应用功能方面的重要性。开发者可以根据实际需求,结合基础手势和方向手势识别,甚至利用AI技术,打造更加智能、人性化的应用。

    Android手势查看图片

    "Android手势查看图片"是一个针对Android新手的教学项目,旨在帮助开发者和用户理解如何在Android应用中实现手势识别功能,特别是用于浏览图片。 手势识别在Android中主要通过Sensor Manager和Gesture Detector两个...

    Android手势库应用

    7. **扩展功能**:除了基本的手势识别,Android还提供了`SimpleOnGestureListener`和` GestureDetector`,支持更复杂的触摸事件处理,如单击、双击、滑动等。这些API可以与手势库结合使用,实现更丰富的交互体验。 ...

    Android 触屏手势识别GestureTest.zip

    通常,一个Android手势识别项目会包含以下几个关键部分: 1. **GestureOverlayView**:这是Android SDK提供的一种用于处理手势绘制的视图。开发者可以在布局文件中添加此视图,然后监听手势绘制过程。 2. **...

    android 手势识别

    通过这个"android 手势识别"项目,初学者不仅可以了解到Android手势识别的基本原理和实现方式,还能锻炼到实际操作的能力,为以后开发更加丰富的交互应用打下坚实基础。同时,这也是Android开发中不可或缺的一部分,...

    Android 触屏手势识别GestureTest.rar

    在Android开发中,触屏手势识别是用户交互设计的关键部分,它使得用户可以通过直观的手势进行操作,提高应用的易用性和用户体验。GestureTest是一个典型的Android应用源码示例,用于帮助开发者理解和实现各种触屏...

    Android 手势监听 控件随手势而动

    在Android开发中,手势识别是用户体验设计的重要组成部分。它允许用户通过简单的触摸和滑动操作与应用程序进行交互,提升操作的...在实际项目中,结合DEMO学习和实践,可以加深对Android手势识别的理解并提升开发能力。

    简述Android触摸屏手势识别

    总之,Android触摸屏手势识别是通过`GestureDetector`和`OnGestureListener`接口实现的,开发者可以通过实现这些接口的方法来处理各种触摸事件,从而创建出更加直观和用户友好的应用程序。通过熟练掌握这一技术,...

Global site tag (gtag.js) - Google Analytics