Android实现手势滑动识别功能

对于Android中的手势识别可以从以下三个Listener入手——OnTouchListener、OnGestureListener、OnDoubleTapListener。这三个监听器分别是触摸监听、手势滑动监听和屏幕双击操作监听。很多的时候我们需要这些手势识别的操作,例如我们自定义控件的时候就经常会用到。下面就对这三个监听器分别进行介绍。

触摸监听器OnTouchListener

让我们的Activity去现实此接口,并重写onTouch方法。重写OnTouchListener的onTouch方法 此方法在触摸屏被触摸,即发生触摸事件(接触和抚摸两个事件)的时候被调用。示范代码如下:

@Override
 public boolean onTouch(View v, MotionEvent event) {
  detector.onTouchEvent(event);
  Toast.makeText(this, "onTouch", TIME_OUT).show();
  return true;
 }

手势滑动监听器OnGestureListener

让我们的Activity去现实此接口,并重写onFling、onLongPress、onScroll、onDown、onShowPress、onSingleTapUp方法。示范代码如下:

/**
  * 手势滑动时别调用
  */
 @Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
   float velocityY) { 

  if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE) {
   Toast.makeText(this, "向左滑动", TIME_OUT).show();
  } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE) {
   Toast.makeText(this, "向右滑动", TIME_OUT).show();
  }
  return false;
 } 

 /**
  * 长按时被调用
  */
 @Override
 public void onLongPress(MotionEvent e) {
  Toast.makeText(this, "触发长按回调", TIME_OUT).show();
 } 

 /**
  * 滚动时调用
  */
 @Override
 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
   float distanceY) {
  Toast.makeText(this, "触发滚动回调", TIME_OUT).show();
  return false;
 } 

 /**
  * 在按下动作时被调用
  */
 @Override
 public boolean onDown(MotionEvent e) {
  Toast.makeText(this, "按下回调", TIME_OUT).show();
  return false;
 } 

 /**
  * 按住时被调用
  */
 @Override
 public void onShowPress(MotionEvent e) {
  Toast.makeText(this, "按住不松回调", TIME_OUT).show();
 } 

 /**
  * 抬起时被调用
  */
 @Override
 public boolean onSingleTapUp(MotionEvent e) {
  Toast.makeText(this, "触发抬起回调", TIME_OUT).show();
  return false;
 }

双击屏幕监听器OnDoubleTapListener

让我们的Activity去现实此接口,并重写onDoubleTap、onDoubleTapEvent、onSingleTapConfirmed方法。示范代码如下:

@Override
 public boolean onDoubleTap(MotionEvent arg0) {
  Toast.makeText(this, "触发双击回调", TIME_OUT).show();
  return false;
 } 

 @Override
 public boolean onDoubleTapEvent(MotionEvent arg0) {
  Toast.makeText(this, "触发双击的按下跟抬起回调", TIME_OUT).show();
  return false;
 } 

 @Override
 public boolean onSingleTapConfirmed(MotionEvent arg0) {
  Toast.makeText(this, "触发单击确认回调", TIME_OUT).show();
  return false;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2017-05-30

Android实现手势滑动多点触摸缩放平移图片效果

现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位. 一.概述 想要做到图片支持多点触控,自由的进行缩放.平移,需要了解几个知识点:Matrix , GestureDetector , ScaleGestureDetector 以及事件分发机制,ps:不会咋办,不会你懂的. 1.Matrix 矩阵,看深入了都是3维矩阵的乘啊什么的,怪麻烦的~~ 其实这么了解下就行了: Matrix 数据结构:3维矩阵

android中view手势滑动冲突的解决方法

Android手势事件的冲突跟点击事件的分发过程息息相关,由三个重要的方法来共同完成,分别是:dispatchTouchEvent.onInterceptTouchEvent和onTouchEvent. public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来进行事件的分发.如果事件传递到view,那么这个方法一定会被调用,返回结果受当前View的onTouchEvent和下级View的dispatchTouchEvent方法的影响,表示是

Android GestureDetector手势滑动使用实例讲解

Gesture在 ViewGroup中使用 GestureDetector类可以让我们快速的处理手势事件,如点击,滑动等. 使用GestureDetector分三步: 1. 定义GestureDetector类 2. 初始化手势类,同时设置手势监听 3. 将touch事件交给gesture处理 先来了解一下如何使用,后面会有示例: package com.example.y2222.myview; import android.content.Context; import android.ut

Android手势滑动实现两点触摸缩放图片

学习安卓手势滑动,多点触摸放大缩小图片,分享给大家供大家参考,具体代码如下 1.布局文件如下main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" andr

Android手势滑动实现ImageView缩放图片大小

本文推出了两种Android手势实现ImageView缩放图片大小的方法,分享给大家供大家参考,具体内容如下 方法一: 将以下代码写到MulitPointTouchListener.java中,然后对你相应的图片进行OnTouchListener. 例如:imageView.setOnTouchListener(new MulitPointTouchListener ()); 在xml中要将ImageView的缩放格式改成Matrix 例如:android:scaleType="matrix&q

Android自定义View实现随手势滑动控件

本文控件为大家分享了Android随手势滑动控件的具体代码,供大家参考,具体内容如下 1.新建自定义控件类:MyView public class MyView extends Button{ //记录上次滑动后的坐标值 private int lastX; private int lastY; public MyView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyV

Android开发之实现手势滑动的功能

Android开发之实现手势滑动的功能 首先得Activity必须实现OnGestureListener接口,该接口提供了关于手势操作的一些方法, onDown方法:onDown是,一旦触摸屏按下,就马上产生onDown事件 public boolean onDown(MotionEvent e) { return false; } onFling方法:当手在屏幕上滑动但手未离开屏幕时触发 MotionEvent e1 手开始触碰屏幕的位置的MotionEvent对象 MotionEvent e

Android实现手势滑动多点触摸缩放平移图片效果(二)

上一篇已经带大家实现了自由的放大缩小图片,简单介绍了下Matrix:具体请参考:Android实现手势滑动多点触摸缩放平移图片效果,本篇继续完善我们的ImageView. 首先加入放大后的移动. 1.自由的进行移动 我们在onTouchEvent里面,加上移动的代码,当然了,必须长或宽大于屏幕才可以移动~~~ @Override public boolean onTouch(View v, MotionEvent event) { mScaleGestureDetector.onTouchEve

Android实现手势滑动多点触摸放大缩小图片效果

网上文章虽多,但是这种效果少之又少,我真诚的献上以供大家参考 实现原理:自定义ImageView对此控件进行相应的layout(动态布局). 这里你要明白几个方法执行的流程: 首先ImageView是继承自View的子类. onLayout方法:是一个回调方法.该方法会在在View中的layout方法中执行,在执行layout方法前面会首先执行setFrame方法. setFrame方法:判断我们的View是否发生变化,如果发生变化,那么将最新的l,t,r,b传递给View,然后刷新进行动态更新

Android实现手势滑动和简单动画效果

一.手势滑动 1.Activity都具有响应触摸事件,也就是说只要触摸Activity,他都会回调一个onTouchEvent()方法.但是在这个方法里无法处理事件,需要配合使用手势识别器(GestureDetector)中的方法onTouchEvent对事件(event)进行分析处理,我们只需要重写这个方法中的操作来达到我们的需求. /** * activity被触摸后,会回调此方法onTouchEvent,并回传一个event对象 * event对象封装了触摸时的动作信息,包括x.y坐标等等

Android编程实现ViewPager多页面滑动切换及动画效果的方法

本文实例讲述了Android编程实现ViewPager多页面滑动切换及动画效果的方法.分享给大家供大家参考,具体如下: 一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了,接下来我们就来实现它. 二.在开始前,我们先要认识一个控件,ViewPager.它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换. 这个附加包是and

Android编程之界面跳动提示动画效果实现方法

本文实例讲述了Android编程之界面跳动提示动画效果实现方法.分享给大家供大家参考,具体如下: 上一个效果图: 先上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a

Android仿支付宝的头部伸缩动画效果

Android5.0推出的MaterialDesign库包含了处理头部工具栏的多个控件,不但允许自定义顶部导航栏,而且导航栏高度是可以伸缩的.如此一来,一方面导航栏能够放得下更多控件,另一方面在用户想看具体内容时也能腾出更多的屏幕空间. 这么说可能比较抽象,那就先来看看两张导航栏的效果图,第一张是导航栏完全展开时的界面,此时页面头部的导航栏占据了较大部分的高度: 第二张是导航栏完全收缩时的界面,此时头部导航栏只剩矮矮的一个长条. 看起来很眼熟是不是,上面的截图正是仿支付宝首页的头部效果.如果你熟

Android实现左右摆动的球体动画效果

首先,看一下效果 可能各位在别处看到过类似的东西,我在微信的文章末尾看到有个玩意,感觉有意思,就用代码实现一下.这篇文章主要把握写代码的思路展示一下. 看到上图,我想各位能想到最简单的实现方案就是用动画,切很多图出来,然后就可以轻松实现了.为了不让自己再舒适区里呆的太安逸,就弄点麻烦的:通过计算来实现.文章的末尾会将全部代码贴出,复制可以直接运行. 需要回忆的知识 重力势能 E = mgh 动能 E = ½mv² 在理想状态下,动能和重力式能可以相互转换,且能量守恒 如果不想太注意细节,以上的知

Android编程实现ImageView图片抛物线动画效果的方法

本文实例讲述了Android编程实现ImageView图片抛物线动画效果的方法.分享给大家供大家参考,具体如下: 想实现抛物线动画,必须知道抛物线的方程,这时候数学其作用了,假如有如图的抛物线: 按照抛物线的方程特别,知道任何的三点可以确定一条抛物线,由已知抛物线的标注 方程为 y = ax² + bx + c:假设A1坐标为(0,0),A2坐标为(300,0),A3坐标为(150,300):联合解方程得知该抛物线的方程为 y = -1/75 x² + 4x:由此方程,我们可以确定抛物线x和y的

Android仿硬币转动微信红包动画效果

项目需要研究了一下微信红包动画,即硬币转动的效果,原理其实就是三张不同角度的图片利用AnimationDrawable帧动画进行播放,在参考了案例之后,给自己记录一下完成的过程. 1,在XML文件中定义动画: 步骤如下: ①新建 Android 项目 ②在drawable目录中新建一个anim.xml(注意文件名小写) <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:andr

原生javascript实现的一个简单动画效果

本文章向大家介绍一个javascript实现的动画.点击开始按钮div会往右移动,点击停止后,div停止移动,再点击则继续移动.请看下面代码. <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <head> <title>javascript实现的简单动画</title> <style type="text/css"&g