zoukankan      html  css  js  c++  java
  • MotionEvent android使用

    在Android的View中,手势检测用于辅助检测用户单击、滑动、长按、双击等行为。我们这篇文章主要介绍如何使用它:

    一、GestureDetector.OnGestureListener

    1、我们可以通过这个接口监听一些手势

    代码如下:

    public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener {
    
        private static final String TAG = "MainActivity";
        private GestureDetector gestureDetector;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            gestureDetector = new GestureDetector(this);
    
        }
    
        public MainActivity() {
            super();
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
    
            return gestureDetector.onTouchEvent(event);
        }
        
        
    
        @Override
        public boolean onDown(MotionEvent e) {
    
            Log.i(TAG, "onDown: 点击了");
            return false;
        }
    
        @Override
        public void onShowPress(MotionEvent e) {
    
        }
    
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            Log.i(TAG, "onSingleTapUp: 点击了");
            return false;
        }
    
        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            Log.i(TAG, "onScroll: 点击了");
            return false;
        }
    
        @Override
        public void onLongPress(MotionEvent e) {
    
        }
    
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            Log.i(TAG, "onFling: 点击了");
            return false;
        }
    }

    如果我们是单点之后可以看到日志:

     滑动的日志:

     长点击:

     都可以检测到。

    2、滑动的速度检测

    在onTouchEvent(这个是属于View的,你也可以在GestureDetector.OnGestureListener接口中写)中我们可以加入速度检测的代码:

            VelocityTracker obtain = VelocityTracker.obtain();
            obtain.addMovement(event);
    
            obtain.computeCurrentVelocity(100);
    
            int xVelocity = (int) obtain.getXVelocity();
            int yVelocity = (int) obtain.getYVelocity();
            obtain.clear();
            obtain.recycle();
            Log.i(TAG, "onTouchEvent:x速度: "+xVelocity);
            Log.i(TAG, "onTouchEvent:y速度: "+yVelocity);

    这样手势滑动的时候就可以检测到速度,这里我设置的时间是100ms。速度=(终点位置-起点位置)/时间段

     其中上下左右的滑动不同,速度值为正负;

  • 相关阅读:
    哈希表--扩展数组
    哈希表效率
    P=(1+1/(1-L))/2
    函数推进
    简单函数2
    简单函数
    getting data from the keybroad
    nutch-2.2.1 hadoop-1.2.1 hbase-0.92.1 集群部署(实用)
    hbase zookeeper独立搭建
    Orchard 介绍
  • 原文地址:https://www.cnblogs.com/hequnwang/p/14284234.html
Copyright © 2011-2022 走看看