私は実際にこれに遭遇し、それを処理しました。 (私の場合)ギャラリーは最初のタッチ(ImageView.onTouchEvent()がfalseを返すとき)の後にタッチイベントを取得しています。これは、3つのことを実装することで修正できます。
まず、ズーム可能なImageViewで、onTouchEventが常にtrueを返して、タッチイベントを渡していることを示します。これにより、タッチイベントがギャラリーに送信されることがなくなり、第2の指のイベントや動きをImageViewで処理できるようになります。
第二に、あなたはそれが現在にズームされているか否かを示すImageViewの中フラグのいくつかの並べ替えを作成する必要があります。
最終それは決して以来、あなたは、ギャラリーに手動でタッチイベントをキャプチャする必要がありますImageViewから渡されます。これは、ギャラリーを拡張し、onInterceptTouchEvent()をオーバーライドするカスタムクラスを作成することで実行できます。このメソッドは、チャイルドImageViewへの途中でタッチイベントを取得します。これをオーバーライドすると、ImageViewとギャラリーの両方がタッチイベントを処理できるようになります。以下は私のために働いたコードです。
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
View view = getSelectedView();
CustomZoomImageView image = (CustomZoomImageView) view.findViewById(R.id.Image);
if (!image.isDraggable) {
onTouchEvent(ev);
}
return super.onInterceptTouchEvent(ev);
}
isDraggable変数は、Imageがズームインされているかどうかの私のインジケータです。イメージがドラッグ可能ではない場合、拡大されていない場合は、タッチイベントをGalleryに渡してスワイプ検出を行います。
幸運を祈る!
非常に非常に素晴らしい答えです。私はこれにあなたの努力を感謝します。 – Arslan