zoukankan      html  css  js  c++  java
  • GestureDetector.OnGestureListener

    为了加强鼠标响应事件,Android提供了GestureDetector手势识别类。通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single Tap Up、Show Press、Long Press、Scroll、Down、Fling),具体包括以下几种:

    boolean  onDoubleTap(MotionEvent e) 解释:双击的第二下Touch down时触发 boolean  onDoubleTapEvent(MotionEvent e)

    解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。 boolean  onDown(MotionEvent e)

    解释:Touch down时触发 boolean  onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)

    解释:Touch了滑动一点距离后,up时触发。 void  onLongPress(MotionEvent e)

    解释:Touch了不移动一直Touch down时触发 boolean  onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)

    解释:Touch了滑动时触发。 void  onShowPress(MotionEvent e)

    解释:Touch了还没有滑动时触发 (与onDown,onLongPress比较 onDown只要Touch down一定立刻触发。 而Touchdown后过一会没有滑动先触发onShowPress再是onLongPress。 所以Touchdown后一直不滑动,onDown->onShowPress->onLongPress这个顺序触发。

    boolean  onSingleTapConfirmed(MotionEvent e) boolean  onSingleTapUp(MotionEvent e)

    解释:上面这两个函数都是在touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发。

    点击一下非常快的(不滑动)Touchup: onDown->onSingleTapUp->onSingleTapConfirmed 点击一下稍微慢点的(不滑动)Touchup: onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed

    使用GestureDetector需要在View中重写onTouchEvent事件,例如:

    GestureDetector mGesture = null;

    @Override   public boolean onTouch(View v, MotionEvent event)   {  

         // TODO Auto-generated method stub    return mGesture.onTouchEvent(event);  

    }

    详细的测试例子如下: package com.jiubang.android.gesturetest;

    import android.app.Activity;

    import android.os.Bundle; import android.util.Log;

    import android.view.GestureDetector;

    import android.view.MotionEvent;

    import android.view.View;

    import android.view.GestureDetector.SimpleOnGestureListener;

    import android.view.View.OnTouchListener;

    import android.widget.Button;

    public class GestureActivity extends Activity    implements OnTouchListener {  

             private Button mButton = null;  GestureDetector mGesture = null;  

             /** Called when the activity is first created. */   

            @Override     public void onCreate(Bundle savedInstanceState) {        

                 super.onCreate(savedInstanceState);        

                 setContentView(R.layout.main);                

                 Log.i("TEST", "onCreate");        

                 mButton = (Button)findViewById(R.id.button1);        

                 mButton.setOnTouchListener(this);        

                 mGesture = new GestureDetector(this, new GestureListener());  

       }

     @Override  public boolean onTouch(View v, MotionEvent event)  {   

                  // TODO Auto-generated method stub   return mGesture.onTouchEvent(event);

     }    class GestureListener extends SimpleOnGestureListener  {

      @Override   public boolean onDoubleTap(MotionEvent e)   {  

                 // TODO Auto-generated method stub    Log.i("TEST", "onDoubleTap");    return super.onDoubleTap(e);   }

      @Override   public boolean onDown(MotionEvent e)   {   

                // TODO Auto-generated method stub    Log.i("TEST", "onDown");    return super.onDown(e);

      }

      @Override   public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,     float velocityY)   {    

               // TODO Auto-generated method stub    Log.i("TEST", "onFling:velocityX = " + velocityX + " velocityY" + velocityY);    return super.onFling(e1, e2, velocityX, velocityY);  

     }

      @Override   public void onLongPress(MotionEvent e)   {  

              // TODO Auto-generated method stub    Log.i("TEST", "onLongPress");    super.onLongPress(e);   }

      @Override   public boolean onScroll(MotionEvent e1, MotionEvent e2,     float distanceX, float distanceY)   {    

              // TODO Auto-generated method stub    Log.i("TEST", "onScroll:distanceX = " + distanceX + " distanceY = " + distanceY);    return super.onScroll(e1, e2, distanceX, distanceY);

      }

      @Override   public boolean onSingleTapUp(MotionEvent e)   {

             // TODO Auto-generated method stub    Log.i("TEST", "onSingleTapUp");    return super.onSingleTapUp(e);  

     }   

     }

    }

  • 相关阅读:
    spring中bean配置和bean注入
    使用nginx搭建https服务器(转)
    Mysql-Proxy实现mysql读写分离、负载均衡 (转)
    RSync实现文件备份同步
    解决bash: mysql: command not found 的方法
    Proftp设置虚拟用户(转)
    详解zabbix安装部署(Server端篇) (转)
    CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放 《CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放》来自张戈博客
    Linux系统防CC攻击自动拉黑IP增强版Shell脚本 《Linux系统防CC攻击自动拉黑IP增强版Shell脚本》来自张戈博客
    linux中防CC攻击两种实现方法(转)
  • 原文地址:https://www.cnblogs.com/qiaoxu/p/3985561.html
Copyright © 2011-2022 走看看