2011-07-03 7 views
1

私のアプリケーションでは、サーバーからダウンロードされたマップを保持するために次のコードを使用しています。Android上で作成されたビットマップをズームしてスクロールするには

<?xml version="1.0" encoding="utf-8"?> 

<ScrollView android:id="@+id/scrollView1" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:layout_gravity="center" 
     android:layout_weight="1.0"> 

     <ImageView android:id="@+id/mapImageView" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_width="wrap_content"     
      android:scaleType="center"/> 

    </ScrollView> 

現在、私は上下に画像をスクロールすることができます。 イメージをすべての方向にスクロールしたり、ズームインまたはズームアウトする機能が必要です。 どうすればいいですか?ありがとう、 Eyal。

+0

たとえば、代わりにWebViewを使用したり、ギャラリーアプリケーションの動作を確認したりできます。http://android.git.kernel.org/?p=platform/packages/apps/Gallery.git;a=tree – mibollma

+0

あなたはもっと具体的になることができますか? – eyal

答えて

3

Sephirotoは、ギャラリー・アプリケーション・コードに基づいて作られた非常にシンプルなImageViewTouchあります:http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/

は、私がプロジェクトでそれを使用し、それがにズームピンチとあなたが望むかもしれないすべてのもので、完璧に動作します。デフォルトでは、画像を設定すると、画像は画面に合わせて縮小されます。

編集:あなたは、サイズ変更、自動画像を防止したい場合は、次のようにImageViewTouchBase.getProperBaseMatrix方法を変更することができます。

protected void getProperBaseMatrix(RotateBitmap bitmap, Matrix matrix) { 
    float viewWidth = getWidth(); 
    float viewHeight = getHeight(); 
    float w = bitmap.getWidth(); 
    float h = bitmap.getHeight(); 
    matrix.reset(); 
    matrix.postConcat(bitmap.getRotateMatrix()); 
    matrix.postTranslate((viewWidth - w)/2, (viewHeight - h)/2); 
} 

これは、サイズを変更しないで画像を中央にする必要があります。

+0

このlibにイメージを追加するとき、libは自動的にイメージのサイズを変更します。これを自動的にサイズ変更しないようにしようとしましたか? – eyal

+0

はい、削除しました。私が変更した方法は私の更新されたポストにあります。 – Gregory

+0

ご協力ありがとうございます。今私は、ズーム操作の前に画像をドラッグしようとしていますが、オートリサイズでは動きません。どのように修正することができますか? – eyal

関連する問題