2011-02-03 7 views
14

私は特定のURI(Webサービスによって取得されたイメージは既に安全な場所に自分のアプリケーション内に保存されています)に対して自分のアプリケーションでイメージを開くImageViewerライブラリを探しています。ピンチズームと「スクロール」垂直/水平を使用するため、「Samsung Galaxy S」ImageViewer-Activityが本当に好きです。また、それは私のサムスンの携帯電話上で非常に高速な画像をスケーリング:)ピンチズームとスクロールをサポートするAndroid ImageViewerクラス

私はこのような意図をもって画像を開くことができることを知っている:

Intent i = new Intent(Intent.ACTION_VIEW); 
i.setDataAndType(uri, "image/*"); 
startActivity(i); 

見つからなかった時に最適な視聴者は、呼び出されていますActivityNotFoundExceptionが発生します。それでクール!

しかし、私はセキュリティ目的のために外部の意図で画像を開くことができないという問題があります。つまり、メニューオプションを使用して開いた画像を外部のSDカードに保存したり、この画像を別のサービス(メール/ twitterまたはs.o.)に送信することはできません。だから、自分のアプリケーション内でしか呼び出せない私自身のImageViewer-Class(Activity)を書く必要があります... 残念なことに、私は非常に熟練した画像を変換していませんので、このユースケースをカバーするオープンソースプロジェクト?

私はすでにGoogleに問い合わせてこの1つを見つけましたhttp://code.google.com/p/android-pinch/しかし、うまくいきませんでした(スクロール機能もありません)。画像がオンラインにどこかにローカル保存されている場合、またはあなたのヒントについて

感謝:)

+0

質問の上に最初のポイントを参照してください2645648/in-a-built-in-api-for-handling-pinch-zoom-in-android – cimnine

答えて

16

画像を処理するための最も簡単な方法は、WebViewを使用しています。 WebViewはピンチとズームの機能をサポートしています。

例のJava:

String imageUrl = "file:///local/dir/image.jpg"; // http://example.com/image.jpg 
WebView wv = (WebView) findViewById(R.id.yourwebview); 
wv.getSettings().setBuiltInZoomControls(true); 
wv.loadUrl(imageUrl); 

XMLソース:私はあまりにものWebViewを使用しています。この時点では

<WebView android:id="@+id/yourwebview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
+0

これは素晴らしいソリューションです。ありがとう!それは必要な方法で動作します。私は1つのオプション 'wvを設定する必要があります。setInitialScale(100); 'それはアンドロイドで画像を見るのが簡単だとうれしい;)画像は私のアプリケーションの内部DBに保存されていますか?または、 'wv.getSettings()。setCacheMode(WebSettings.LOAD_NO_CACHE);'を呼び出す必要がありますか? –

+0

私はそれがキャッシュまたは何かに格納されているとは思わない。 – Floern

19

。しかし、これは概念的に間違っています。WebViewは画像を表示するためのものではなく、Webコンテンツを表示するためのものです。 WebViewはかさばり、扱いにくいです。あなたはそれをカスタマイズすることを制限しました。たとえば、スケーリングが必要ですが、ズームコントロールを表示したくない場合や、デフォルトの別の場所に移動したい場合があります。

したがって、私はこの問題について検索し、いくつかの解決策を見つけた:クリス・Banes

  • から

    • PhotoViewウィジェットまた、あなたは、ソニーエリクソンからこのチュートリアルを見ることができます(ソースが利用可能)と、独自のインタフェースを実装することができますウィジェット:part1part2part3
    • そしてgithubの
    で別のライブラリImageViewZoom http://stackoverflow.com/questions/:

    UPDATE

    クリスBanesて写真をズームするためにジェスチャーをサポートして素晴らしいライブラリを作成して、ピンチ・ツー・ズームアンドロイドで約もある

  • +0

    はい、 "ImageViewZoom"は動作しますが、APIレベル8以上でのみ動作します。 – gregn3

    +0

    ImageViewZoomはピンチとズームの両方をサポートしていません。最近、ユーザーが指でつまんで画像の一部を拡大したいときには、まったく役に立たない。 – AndroidDev

    +1

    Chris BanesさんからのPhotoViewウィジェットは素晴らしい作品です! –

    関連する問題