左手少三个手指可以考c2驾照:如何在 Android中识别三个手指点击

关于左手少三个手指可以考c2驾照的问题,在three fingers up中经常遇到, 我想检测三个手指点击在 Android 屏幕。我能够检测到两个手指。如何检测三个手指呢?

我想检测三个手指点击在 Android 屏幕。我能够检测到两个手指。如何检测三个手指呢?

12

这段代码可以帮助你:

public boolean onTouchEvent(MotionEvent event)
{
    int action = event.getAction();
    switch(action & MotionEvent.ACTION_MASK)
    {
        case MotionEvent.ACTION_POINTER_DOWN:
            // multitouch!! - touch down
            int count = event.getPointerCount(); // Number of 'fingers' in this time
            break;
    }
}
0

我被要求只处理三个手指点击使用上述解决方案,如果你点击4 & amp;5 手指和更多,你会得到 3 个手指触发onTouchEvent所以我必须实现我自己的解决方案,因为它是好的,我可以分享它。

所以这个想法是创建一个CountDownTimer,每当用户完成点击屏幕时,它将触发一个事件。

在这个例子中,我将numberOfFingers定义为3,所以当且仅当在屏幕上点击三个手指时,我才会显示 Toast。

你可以改变它,并得到任何数量的手指,你想跟踪

首先,创建一个新的 java 类并将其命名为FingerTapHandler

import android.os.CountDownTimer;
public class FingerTapHandler {
    private final int numberOfTrackingFingers;
    private int receivedNumOfFingers;
    private final OnTouchTimerListener touchTimerListener;
    public FingerTapHandler(int numberOfTrackingFingers, OnTouchTimerListener listener) {
        this.numberOfTrackingFingers = numberOfTrackingFingers;
        this.touchTimerListener = listener;
    }
    public void updateFingersCount(int fingers) {
        reset();
        this.receivedNumOfFingers = fingers;
    }
    private void reset() {
        onTouchTimer.cancel();
        onTouchTimer.start();
    }
    CountDownTimer onTouchTimer = new CountDownTimer(100, 100) {
        @Override
        public void onTick(long l) {
        }
        @Override
        public void onFinish() {
            if (receivedNumOfFingers == numberOfTrackingFingers) {
                touchTimerListener.handleOnFinish();
            }
        }
    };
}

我们还需要一个接口来处理 tap 事件:OnTouchTimerListener

public intece OnTouchTimerListener {
    void handleOnFinish();
}

现在,你可以从上面的类创建一个新的实例,让你的活动跟踪水龙头的数量。

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements OnTouchTimerListener {
    private FingerTapHandler fingerTapHandler;
    private static final int numberOfFingers = 3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fingerTapHandler = new FingerTapHandler(numberOfFingers, this);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        if ((action & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_DOWN) {
            int fingers = event.getPointerCount();
            fingerTapHandler.updateFingersCount(fingers);
        }
        return super.onTouchEvent(event);
    }
    @Override
    public void handleOnFinish() {
        Toast.makeText(this, "Tapped on screen with " + numberOfFingers + " fingers", Toast.LENGTH_SHORT).show();
    }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(258)
基恩士plc编程软件:python软件可以通过modbus代替PLC中的逻辑梯形图程序吗
上一篇
如何在coreldraw:如何使用CorelDRAW类型库17.0
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(4条)