Androidのドキュメントの指示に従って、ScaleGestureDetectorをOnTouchListenerに接続しました。何らかの理由で、ScaleGestureDetectorはピンチジェスチャの終了を常に検出するとは限りません。これは主に、大きいものから小さいものへと速くつまむときに発生します。
その結果、両方の指を離した後、検出器はジェスチャ終了イベントを発生させません。その後、画面を1つタッチすると、スケールジェスチャが続行されていると見なされます(onScaleイベントが発生し続けます)。検出器に終了イベントを発生させるには、別のジェスチャを実行する必要があります。
OnTouchListenerにログを追加しましたが、スケールジェスチャがスタックした場合でも、1本の指を使用してevent.getPointerCount()が1の場合、モーションイベントが正常に発生します。
他のリスナーが介入しないようにしました。onTouchListenerを備えたビューは、画面上の唯一のビューではありませんが、この1つのビュー内でジェスチャを開始および終了するように非常に注意している場合にも、この効果が発生します。
終了検出を改善する方法はありますか?
または、ScaleGestureDetectorを手動でonScaleEndを起動しscaleGestureDetector.isInProgress()
てfalseに変更するように設定する方法がありますか?