2011-09-16 52 views
1

ギャラリーアプリケーションのようにイメージを維持するための1つのアプリケーションを開発しています。その正常に動作しますが、フルサイズの画像を表示するには拡大/縮小効果を実装する必要があります。フルサイズの画像ビューではギャラリービューでギャラリービューを使用していますが、画像は1つずつ表示されます。私はギャラリービューで可視画像のピンチズームを実装する必要があります。イメージビューアンドロイドでのギャラリービューの拡大と縮小

私は長い時間ネットで検索しましたが、画像ビューのみを取得しました。画像ビューをギャラリービュー内で使用する場合、スクロールメソッドのギャラリービューは、実行された画像ビューonScroll()およびonFling()メソッドを隠していました。だから誰も私と一緒にアイデアを共有している。

ありがとうございます。

答えて

3

私は実際にこれに遭遇し、それを処理しました。 (私の場合)ギャラリーは最初のタッチ(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に渡してスワイプ検出を行います。

幸運を祈る!

+1

非常に非常に素晴らしい答えです。私はこれにあなたの努力を感謝します。 – Arslan

関連する問題