Android GestureDetector实现手势滑动效果

本文实例为大家分享了Android GestureDetector实现手势滑动的具体代码,供大家参考,具体内容如下

目标效果:

程序运行,手指在屏幕上从左往右或者从右往左滑动超过一定距离,就会吐司输出滑动方向和距离。

1.activity_main.xml页面放置一个ImageView控件。

activity_main.xml页面:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity" >

  <ImageView
    android:id="@+id/ivShow"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/ic_launcher" />

</RelativeLayout>

2.MainActivity.java页面实现滑动方法。

MainActivity.java页面:

package com.example.gesturedetector;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

 private ImageView ivShow;
 private GestureDetector gestureDetector;

 class myGestureListener extends SimpleOnGestureListener{
 @Override
 /*识别滑动,第一个参数为刚开始事件,第二个参数为结束事件*/
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
  float velocityY) {
  if(e1.getX()-e2.getX()>50){
  Toast.makeText(MainActivity.this,"从右往左滑动"+(e1.getX()-e2.getX()),Toast.LENGTH_LONG).show();
  }else if(e2.getX()-e1.getX()>50){
  Toast.makeText(MainActivity.this,"从左往右滑动"+(e2.getX()-e1.getX()),Toast.LENGTH_LONG).show();
  }
  return super.onFling(e1, e2, velocityX, velocityY);
 }
 }
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 gestureDetector=new GestureDetector(MainActivity.this,new myGestureListener());

 ivShow=(ImageView) findViewById(R.id.ivShow);
 ivShow.setLongClickable(true); //view必须设置为true,否则手势识别无法正确工作
 ivShow.setOnTouchListener(new OnTouchListener() {

  /*可以捕获到触摸屏幕发生的Event事件*/
  @Override
  public boolean onTouch(View arg0, MotionEvent event) {
  gestureDetector.onTouchEvent(event);//转发
  return false;
  }
 });
 }
}

3.程序较简单,运行就可以显示目标效果了。

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

(0)

相关推荐

  • 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 GestureDetector用户手势检测实例讲解

    一.概述 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等. 一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用户触摸的轨迹去判断是什么手势). Android sdk给我们提供了GestureDetector(Ge

  • Android自定义GestureDetector实现手势ImageView

    不说废话了,进入我们今天的主题吧. 先贴上前面内容的地址: Android手势ImageView三部曲(一) Android手势ImageView三部曲(二) Android手势ImageView三部曲(三) 前面我们讲到了ScaleGestureDetector这个工具类,我在疑惑,为什么搞出一个ScaleGestureDetector,不顺带把什么旋转.移动.做了呢? 好吧-! 谷歌肯定还是想给开发者留一点自己的空间哈. 仿照ScaleGestureDetector,我们来定义一个叫Move

  • Android自定义viewgroup可滚动布局 GestureDetector手势监听(5)

    这篇效果和上一篇:http://www.jb51.net/article/100638.htm的效果是一样的,但是不再在OnTouchEvent中写代码,而是使用系统自带的类GestureDetector来监听手势以及滑动事件等等,它内置了滑动,点击,长按等事件,而且有快速滑动,比较方便,比自己写的细节处理要好. 代码: package com.example.libingyuan.horizontallistview.ScrollViewGroup; import android.conten

  • android使用gesturedetector手势识别示例分享

    复制代码 代码如下: public class MyGestureLintener extends SimpleOnGestureListener {private Context context;public MyGestureLintener(Context context) {    super();    this.context = context;} // 单击,触摸屏按下时立刻触发/*@Overridepublic boolean onDown(MotionEvent e) {  

  • Android手势识别器GestureDetector使用详解

    以前只知道控件的onTouchEvent()事件,它的动作有MotionEvent.ACTION_DOWN.MotionEvent.ACTION_MOVE.MotionEvent.ACTION_UP;今天有个需求,要监听控件的双击.拖动.滑动等事件,这时onTouchEvent()很明显不能满足我们的需求,经多方打听,找到了今天的主角GestureDetector,下面就对它进行简单的学习. 构造方法: 已过时的有2个,不推荐使用. GestureDetector(GestureDetector

  • Android触摸及手势操作GestureDetector

    现在的智能手机不敢说百分百的都是触摸屏,也应该是百分之九九以上为触摸屏了,触摸屏为我们操作无键盘.无鼠标的手机系统带来了很多的便利.当用户触摸屏幕时会产生很多的触摸事件,down.up.move等等.View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,如下: public class MainActivity extends Activity { ... // Thi

  • Android编程使用GestureDetector实现简单手势监听与处理的方法

    本文实例讲述了Android编程使用GestureDetector实现简单手势监听与处理的方法.分享给大家供大家参考,具体如下: 添加手势识别监听步骤: 一.给相应的控件添加触摸监听事件, 二.利用GestureDetector转发这个触摸事件. 三.事先定义好一个实现simpleongestureListener这个监听的接口的类 四.在这个监听中处理各种事件. 具体代码如下: MainActivity代码如下: package com.example.gesturedetector; imp

  • Android GestureDetector实现手势滑动效果

    本文实例为大家分享了Android GestureDetector实现手势滑动的具体代码,供大家参考,具体内容如下 目标效果: 程序运行,手指在屏幕上从左往右或者从右往左滑动超过一定距离,就会吐司输出滑动方向和距离. 1.activity_main.xml页面放置一个ImageView控件. activity_main.xml页面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

  • Android实现三段式滑动效果

    目录 高德的效果: 高德的效果: 实现的效果: 我们实现的效果和高德差距不是很大,也很顺滑.具体实现其实就是集成CoordinatorLayout.Behavior /**  * 高德首页滑动效果 */ public class GaoDeBottomSheetBehavior<V extends View> extends CoordinatorLayout.Behavior<V> { public static final int STATE_DRAGGING = 1; pub

  • Android实现图片左右滑动效果

    关于滑动效果,在Android中用得比较多,本示例实现的滑动效果是使用ViewFlipper来实现的,当然也可以使用其它的View来实现.接下来就让我们开始实现这种效果. 接下来我们看一下程序结构图: MainActivity文件中代码: package com.android.flip; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import andro

  • 微信小程序实现手势滑动效果

    本文实例为大家分享了微信小程序实现手势滑动的具体代码,供大家参考,具体内容如下 wxml: <view bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd" > </view> index.js: var touchStartX = 0;//触摸时的原点 var touchStartY = 0;//触摸时的原点 var t

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

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

  • 基于JS实现Android,iOS一个手势动画效果

    废话不多说了,先给大家展示下效果图: 这是iOS下的效果,android下完全一致.通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手势控制图片上下动画滑动实现开合效果,还支持声音效果. 下面是主要的代码 //index.ui.js var do_Animator1 = mm("do_Animator"); do_Animator1.append(500, { y: -1334, curve:

  • Android自定义StickinessView粘性滑动效果

    design包的出现,Android界面发生了巨大变化,各种滑动配合的效果,下面我就粘性滑动中的一种进行自定义,效果图如下: 大家看到效果了,这里我是继承了LinerLayout,方便一点,若果是ViewGroup的话,也就复杂一点点.这里分为三部分: 1.head1,顶部可移动的Layout. 2.head2,固定的头部,不会滑动除屏幕外. 3.可滑动的Layout(这里只可以是ListView,不过也可以是任何可滑动的View,只要给出Head可滑动的时机即可) 本StickinessVie

  • Android手势左右滑动效果

    最近想实现Android左滑弹出菜单框,右滑消失菜单这个个功能.了解了一下Android 的滑动事件,必须是在view组件或者Activity上实现,同时必须实现OnTouchListener, OnGestureListener这个两个接口. public class MyRelativeLayout extends RelativeLayout implements GestureDetector.OnGestureListener{ private float mPosX, mPosY,

  • Android实现手势滑动(左滑和右滑)

    最近想实现Android左滑弹出菜单框,右滑消失菜单这个个功能.了解了一下Android 的滑动事件,必须是在view组件或者Activity上实现,同时必须实现OnTouchListener, OnGestureListener这个两个接口. public class MyRelativeLayout extends RelativeLayout implements GestureDetector.OnGestureListener{ private float mPosX, mPosY,

随机推荐