在android中检测慢速和快速轻弹

时间:2017-06-12 04:16:55

标签: android

我正在开发一个项目,并且需要在某些对象中添加轻弹。但问题是区分轻弹快速或慢速的轻弹动作。 我可以识别android中的轻弹速度吗?

到目前为止的代码是;

public class MainActivity extends Activity implements
        GestureDetector.OnGestureListener,
        GestureDetector.OnDoubleTapListener{

    private static final String DEBUG_TAG = "Gestures";
    private GestureDetectorCompat mDetector;

    // Called when the activity is first created.
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDetector = new GestureDetectorCompat(this,this);
        mDetector.setOnDoubleTapListener(this);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event){
        this.mDetector.onTouchEvent(event);
        // Be sure to call the superclass implementation
        return super.onTouchEvent(event);
    }

    @Override
    public boolean onFling(MotionEvent event1, MotionEvent event2,
            float velocityX, float velocityY) {
        Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

Android's Documentation for OnFling应该给你答案:

  

velocityX float:沿x轴以每秒像素为单位测量此速度。   velocityY float:此投影的速度,以y轴为单位,以每秒像素为单位。

你过度了

 @Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
        float velocityX, float velocityY) {
    Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
    return true;
}

每次检测到飞行动作时都应该调用。因此,只需根据您要跟踪的轴移动来测量velocityX和velocityY。