【问题标题】:How to use Double click in part of screen?如何在部分屏幕中使用双击?
【发布时间】:2020-08-21 16:17:14
【问题描述】:

我有 2 个视图,我想在这些视图中双击来做不同的事情。我尝试了一些解决方案,但未能得到我的答案。 布局:

ontouchlistener:

View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
    switch (event.getAction()){
        case MotionEvent.ACTION_DOWN:
            x1=event.getX();
            y1=event.getY();
            break;
        case MotionEvent.ACTION_UP:
            x2=event.getX();
            y2=event.getY();
            float valueX = Math.abs(x1-x2);
            float valueY = Math.abs(y1-y2);
            if(x1>x2 && valueY<MIN_DISTANCE){
                Toast.makeText(tester.this, "LEFT", Toast.LENGTH_SHORT).show();
            }
            else if(x1<x2 && valueY<MIN_DISTANCE){
                Toast.makeText(tester.this, "RIGHT", Toast.LENGTH_SHORT).show();
            }
            else if(y1<y2 && valueX<MIN_DISTANCE){
                Toast.makeText(tester.this, "DOWN", Toast.LENGTH_SHORT).show();
            }
            else if(y2<y1 && valueX<MIN_DISTANCE){
                Toast.makeText(tester.this,"UP",Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(tester.this, "NOT DETECTED", Toast.LENGTH_SHORT).show();
            }
        }
        return true;
    }
};

如何在此处使用双击?或者有什么方法可以使用 getureDetector(不是全屏)。

【问题讨论】:

  • 在此处添加您尝试的解决方案,然后指定您遇到问题的位置。
  • 我还没有找到任何解决方案。我可以在全屏和 ontouchlisterner 部分屏幕(例如视图)上实现手势。但是当我使用 OntouchListener 时,我无法实现双击。
  • 确保您的视图可点击并尝试此解决方案 - stackoverflow.com/a/45054909/9545394
  • 我的 2 个视图是否必须使用 2 个手势检测器?我不能用一个来做这个吗?

标签: android


【解决方案1】:

使用 2 个视图并在这些视图中使用手势检测器。
在 oncreate 里面:

        LeftGestureDetector = new GestureDetector(this,new LeftGestureListener());

在创建之外:

    View.OnTouchListener touchListener = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return LeftGestureDetector.onTouchEvent(event);
    }
};

手势检测器:

 class LeftGestureListener extends GestureDetector.SimpleOnGestureListener {
    @Override
    public boolean onDown(MotionEvent event) {
        Log.d("TAG","onDown: ");
        return true;
    }
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        //your code
        return true;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        long singleTapTime = System.currentTimeMillis();
        if(singleTapTime-doubleTapTimeLeft>DOUBLE_CLICK_TIME_INTERVAL) {
           //for single tap confirmed
        }
        return super.onSingleTapConfirmed(e);
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        //code here
        return true;
    }
}

对其他视图也做同样的事情

【讨论】:

    猜你喜欢
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2014-11-09
    • 2021-07-11
    相关资源
    最近更新 更多