2017-09-26 25 views
0

私のアプリユーザーは、画面上で指を動かすことで、画面をズームするときに他の操作を行うことができます。 私のアプリはスケールイベントとタッチイベントを聞きます。Android onScale onTouchEvent

私の問題は、2本の指が決して同時に画面に触れることがないため、画面に触れる最初の指がスケールではなくタッチイベントを呼び出すようにすることです(2本目の指がonScaleを呼び出したときに間違って関数が呼び出されています)。

私は、ユーザーが指を離したときにズーム後に同じ問題が発生します。

誰かが何をすべきか知っていますか? ありがとう

答えて

0

タッチイベントは、既に経験したように低すぎます。それを処理するScaleGestureDetectorを使用してください。 official docから採取された簡単な例では、ドラッグのような他のより複雑なイベントのために使用されるべきである

public MyCustomView(Context mContext){ 
    ... 
    // View code goes here 
    ... 
    scaleDetector = new ScaleGestureDetector(context, new ScaleListener()); 
} 

@Override 
public boolean onTouchEvent(MotionEvent ev) { 
    // Let the ScaleGestureDetector inspect all events. 
    if(!scaleDetector.onTouchEvent(ev)) { 
     // detect the move event here 
    } 
    return true; 
} 

同じ検出パターンのようなものとすることができます。

+0

私はズーム検出にscalegesturedetectorを使用していますが、私のonTouchEvent関数では動きも検出しなければなりませんでした。ズームが検出されると、動きも検出されます。それは私の問題です。 – Nos

+0

私は指を動かすときに私の視点を翻訳しなければならず、ピンチしたときにズームしなければならなかった。私の問題は、ピンチが行われたときです。最後の指の位置を移動イベントとして保持します。 – Nos

+0

@Nos 'scaleDetector.onTouchEvent()'は、イベントが処理されたかどうかを示すブール値を返します。それで、両方の検出を相互に排除することができます。 –

関連する問題