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();
        }
       

    }

  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4056556.html
Copyright © 2011-2022 走看看