私はonDrawとonTouchEventメソッドを持つ単純なカスタムビューを持っています。私が必要とするのは、ユーザーが2秒以上同じ位置(Y座標)に指を持っていたかどうかを何とか確認することです。ユーザーが画面上の同じ場所を2秒間押しているかどうかを確認する方法はありますか?
EDIT:追加の説明とコード。私の単純なカスタムビューが何をしているか
は、ユーザーの指の下に横線を引くです。画面上を上下に移動すると、水平線があなたに続きます。 私がしようとしているのは、ユーザーが2秒間同じ場所に指を持っていた場合にフラグを立てることです()。言い換えれば、ラインが2秒間何らかのY座標の周りに保持されていた場合です。
public class RateView extends View {
float touchY = (getHeight()/2);
boolean isPressed = false;
Paint paint = new Paint();
//Bunch of standard constructors
private void init(Context context, AttributeSet attr) {
paint.setColor(ContextCompat.getColor(context, R.color.line));
paint.setStrokeWidth(10);
paint.setAntiAlias(true);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
//If pressed -> draw horizontal line
if (isPressed) {
canvas.drawLine(0, touchY, (canvas.getWidth()), touchY, paint);
}
}
@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
isPressed = true;
break;
case MotionEvent.ACTION_MOVE:
touchY = motionEvent.getY();
break;
case MotionEvent.ACTION_UP:
isPressed = false;
break;
}
invalidate();
return true;
}}
うわー私は、これは私が探していたまさにだと思います。ちょっとした微調整が必要です。私のonDrawメソッドでは、ユーザーの指の下に水平線を描いているので、上下に動かすことができます。また、ACTION_MOVEによって座標をキャッチして描画するため、線も移動します。私が達成したいのは、ユーザーがY座標の周りを2秒間保持していて、画像がポップしている場合です。代わりに私のコードをACTION_MOVEに入れると、それはうまくいくのでしょうか? – DisplayName
私は、ユーザーがアップかどうか手を動かすかどうかを追跡する必要があると思い除いて、あなたが同じロジックを適用することができると思います。あなたの質問にもっと多くのコードを提供できるかどうかは、より有益かつ明白です。あなたはこのロジックを使用してみて、これがあなたに役立つかどうかを見てみてください。 – skbrhmn
説明とともにコードを追加しました:) – DisplayName