15

私はAndroidで非常に基本的なギャラリーを構築しています。これは、カメラフォルダーの最後の画像を表示し、ユーザーは左にスライドして前の画像を表示できます。

viewpagerを使用して実装を完了し、sampleSizeを使用してpagerAdapterを使用して画像を拡大縮小しました。私の問題は、実装がデフォルトのギャラリーアプリほど効率的ではないことです。画像をスライドするたびに、次の画像が読み込まれるまで約200ミリ秒待つ必要があります。したがって、基本的に、それを実装する方法についての私の考えはうまくいきません。

どうすればこれを効率的に行うことができますか?可能であれば、後でズームインおよびズームアウトできる実装を使用しますか?


これは有望に見えますが、ドローアブルの代わりにファイルを使用して実装する方法がわかりません http://www.androidviews.net/2012/11/photoview/


編集:

フォトビュー(ハッキングされたビューページャー)を使用して速度を少し向上させることができましたが、ファイルパスをビットマップまたはドローアブルに変換するには時間がかかりすぎます。

dilixとiDroidExplorerによって提案された次の2つの方法を試しました。

// Method A
Drawable d = Drawable.createFromPath(imagePath);
imageView.setImageDrawable(d);

// Method B
Bitmap myBitmap = BitmapFactory.decodeFile(imagePath);
imageView.setImageBitmap(myBitmap);

ただし、どちらもエラーが発生しますBitmap too large to be uploaded into a texture。画像をimageViewにできるだけ速く取得し、どういうわけかこのエラーを回避する必要があります。そうすれば、まともな速度が得られるでしょう。現在、画像を拡大縮小してドローアブルに変換していますが、あまり効率的ではありません。

4

4 に答える 4

3

この素晴らしいウェブサイトをチェックしてください:http ://www.androidviews.net/ そして多分これはあなたが望むものです:http ://www.androidviews.net/2012/11/photoview/

必要に応じて、ページのスクロール、ズーム、パンが可能です。プロジェクトでいくつかの変更を加え、画像の読み込みを怠りました。必要に応じて正確に機能しています。

于 2013-01-22T05:16:59.910 に答える
1

1)

これは有望に見えますが、ドローアブルの代わりにファイルを使用して実装する方法がわかりませんhttp://www.androidviews.net/2012/11/photoview/

アダプターにドローアブルのリストを保存するのではなく、SDカード上のファイルへのリンクを保存してからロードする必要があります。

2)しかし、ファイルからロードするにはsdカードから解析する必要があるため、ドローアブルの代わりにファイルはそれほど効率的ではないと想像できます。

複数の画像を同時にメモリにロード(圧縮)することで時間を節約できると思います。他の画像にスワイプすると、すでに画像とメモリがあり、スワイプしながら他の画像をメモリにロードし始めることができます。

ギャラリーを飛び越えるとき、画像をロードできず、ほとんど停止した後にロードできない場合があります。

これが主な問題です。メモリの消費とパフォーマンスです。

アップデート

自分でこれを探索するよりも、Googleギャラリーの既存のコードを探索する方が良いと思います:https ://github.com/CyanogenMod/android_packages_apps_Gallery

私がチェックしたように-それらはキャッシュを保存し(ほとんど私が複数のビットマップをロードすることについて言ったように)、サイズ変更された画像のみを保存します-効率的であるようです。

于 2013-01-29T13:42:04.310 に答える
1

ビューページャーでビットマップを効率的に使用するための優れた例については、公式ドキュメントを参照してください。すでにロードされている画像のキャッシュを使用する必要があり、画像はUIスレッドの外部にロードする必要があります。また、画像をディスプレイに必要な最小サイズに拡大縮小する必要があります(通常、2の累乗です。画像は必ずしも希望どおりに拡大縮小されるとは限らないことに注意してください)。ViewPagerは、次の準備のために背景の画像も読み込みます。スライド。setOffScreenPageLimitメソッドで設定されます(デフォルトは通常は適切ですが、2だと思います)。

https://developer.android.com/training/displaying-bitmaps/index.html

于 2013-01-29T13:45:13.573 に答える
1

あなたが正しい解決策を得たかどうかはわかりません。ただし、指定したリンクを使用して独自の実装を続行する場合は、次のようにします。

http://www.androidviews.net/2012/11/photoview/   //this link is given in your question

そして、ファイルのパスをドローアブルに変換する方法について、このSOを見ることができます。これで、指定したファイルの描画可能ファイルを取得し、指定したリンクに実装できます。

リンクはうまくいくと思います。

コメントしてください。

于 2013-01-30T04:02:13.330 に答える