フィンガーまたは2本の指が押されたときに異なるアクションを実行する必要があるアプリで問題が発生します。私は2本の指、マルチタッチ一部レジスタを押したときAndroid 2フィンガータッチトリガー1フィンガータッチと2フィンガータッチ
@Override
public boolean onTouchEvent(MotionEvent event){
int touchX = (int)event.getX();
int touchY = (int)event.getY();
int action = event.getActionMasked();
//Multitouch
if(event.getPointerCount() > 1 && action == MotionEvent.ACTION_POINTER_DOWN){
System.out.println("2 Finger press");
return true;
}
else if(action == MotionEvent.ACTION_DOWN && action != MotionEvent.ACTION_POINTER_DOWN){
if(event.getPointerCount() == 1) {
System.out.println("single finger down");
invalidate();
return true;
}
}
return false;
}
私が午前問題があり、その後ので、単一のプレスを行います。
は現在、私は次のコードを持っています。
私はそれを修正する方法をいくつか調べました。その理由は、私が問題を解決すると思ったaction != MotionEvent.ACTION_POINTER_DOWN
というシングルタッチ条件をチェックしているからです。これで問題は解決しなかったので、event.getPointerCount() == 1
をチェックすることにしましたが、残念ながら2本の指で押すと両方の行が印刷されます。
要約すると、2本の指が押されたときに2本の指の部分だけを呼び出す必要があります。
私はその上のドキュメントを再読み込みする必要がありますし、それをどうやって行うのかを考えてください。私は、あなたのサンプルコードが間違っていると信じていますが、2本の指の押さえを全く登録していません。私はこれがsecondaryPointerId = -1によって引き起こされたと考えます。これは、マルチタッチの条件が満たされないことを意味します。 – kalenpw
'' MotionEvent.ACTION_POINTER_DOWN'のアクションを受け取ったときに 'secondaryPointerId'を割り当てる必要があります。正しいアクションインデックスを参照する方法についての私の仕組みはオフになっているかもしれません(私はそれをメモリから書きました)が、要点は正しいです。 'secondaryPointerId' == -1の場合は、表面に指が1つ(または全くない)ためです。 – hsl
私はそれをもっと調べていましたが、問題は 'case MotionEvent.ACTION_POINTER_DOWN'は実際には入力されませんでした。なぜこれが正しいと思うのですか?私はあなたがsecondaryPointerIdについて何を意味するのかを見ています – kalenpw