zoukankan      html  css  js  c++  java
  • android GestureDetector 手势的判断

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.GestureDetector;
    import android.view.GestureDetector.OnGestureListener;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.TextView;
    import android.widget.Toast;

    public class GestureActivity extends Activity implements OnTouchListener,
            OnGestureListener {

        GestureDetector detector;

        public GestureActivity() {
            detector = new GestureDetector(this);
        }
       
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                TextView tv = (TextView) findViewById(R.id.TextView001);
                //设置tv的监听器
                tv.setOnTouchListener(this);
                tv.setFocusable(true);
                //必须,view才能够处理不同于Tap(轻触)的hold
                tv.setClickable(true);
                tv.setLongClickable(true);
                detector.setIsLongpressEnabled(true);
        }
       
       
          
        public boolean onTouch(View v, MotionEvent event) {
            return detector.onTouchEvent(event);
        }
     
        // 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发
        public boolean onDown(MotionEvent arg0) {
            Log.i("MyGesture", "onDown");
            Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();
            return true;
        }
         
         
        public void onShowPress(MotionEvent e) {
            Log.i("MyGesture", "onShowPress");
            Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show();
        }
         
        // 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发
        public boolean onSingleTapUp(MotionEvent e) {
            Log.i("MyGesture", "onSingleTapUp");
            Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show();
            return true;
        }
         
        // 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            Log.i("MyGesture", "onFling");
           
            // 参数解释:
            // e1:第1个ACTION_DOWN MotionEvent
            // e2:最后一个ACTION_MOVE MotionEvent
            // velocityX:X轴上的移动速度,像素/秒
            // velocityY:Y轴上的移动速度,像素/秒
         
            // 触发条件 :
            // X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
             
            final int FLING_MIN_DISTANCE = 100, FLING_MIN_VELOCITY = 200;
            if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
                // Fling left
                Log.i("MyGesture", "Fling left");
                Toast.makeText(this, "Fling Left", Toast.LENGTH_SHORT).show();
            } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
                // Fling right
                Log.i("MyGesture", "Fling right");
                Toast.makeText(this, "Fling Right", Toast.LENGTH_SHORT).show();
            } else if(e2.getY()-e1.getY()>FLING_MIN_DISTANCE && Math.abs(velocityY)>FLING_MIN_VELOCITY) {
                // Fling down
                Log.i("MyGesture", "Fling down");
                Toast.makeText(this, "Fling down", Toast.LENGTH_SHORT).show();
            } else if(e1.getY()-e2.getY()>FLING_MIN_DISTANCE && Math.abs(velocityY)>FLING_MIN_VELOCITY) {
                // Fling up
                Log.i("MyGesture", "Fling up");
                Toast.makeText(this, "Fling up", Toast.LENGTH_SHORT).show();
            }
           
           
            return false;
            
        }
         
        // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            Log.i("MyGesture", "onScroll");
            Toast.makeText(this, "onScroll", Toast.LENGTH_LONG).show();
            return true;
        }
         
        // 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发
        public void onLongPress(MotionEvent e) {
            Log.i("MyGesture", "onLongPress");
            Toast.makeText(this, "onLongPress", Toast.LENGTH_LONG).show();
        }
       

    }

  • 相关阅读:
    微信二维码 场景二维码 用于推送事件,关注等 注册用户 ,经过测试
    简单的 Helper 封装 -- CookieHelper
    简单的 Helper 封装 -- SecurityHelper 安全助手:封装加密算法(MD5、SHA、HMAC、DES、RSA)
    Java反射机制
    Windows Azure Web Site (13) Azure Web Site备份
    Windows Azure Virtual Machine (1) IaaS用户手册
    Windows Azure Web Site (1) 用户手册
    Windows Azure Web Site (12) Azure Web Site配置文件
    Windows Azure Web Site (11) 使用源代码管理器管理Azure Web Site
    Windows Azure Web Site (10) Web Site测试环境
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4056556.html
Copyright © 2011-2022 走看看