1

サーバーには高品質で豊富なカラー画像があります。私はListView小さな ImageViews でそれらを表示しています。ユーザーがアイテムを選択すると、選択した画像が全画面表示されます。このようにして、画像を選択した後、画像は既に読み込まれているため、すばやく読み込まれ、キャッシュに保存されます。

問題は、各項目をダウンロードする必要があるため、最初の起動時にリスト全体の読み込みがかなり遅いことです。での画像の読み込みを減らす方法はありますListViewか? 私のビジョンでは、ListViewかなり速くロードする必要があり、選択後はイメージのロードに時間がかかる場合があります。サーバーからリストに低品質のサイズ変更された画像を渡すことで、これを最適化できることはわかっています。選択後、高品質の画像 URL を渡します。しかし、大量の画像があり、それぞれのサイズを変更するのは面倒なので、これは非常に大きな仕事です。

これを少しでも最適化するにはどうすればよいですか?

更新:私の質問は十分に明確ではなかったと思います。ListView、または画像の読み込みに問題はありません。「読み込み」画面でユーザーをハングアップさせず、画像を非同期に読み込み、ListView の各項目に対して画像が読み込まれていることを単純化します。しかし、インターネット接続が遅いと、サムネイルが長時間そこにとどまり、ユーザーがアプリを終了するだけだと思います...読み込みプロセスを最適化する方法を探しています。サイズを変更しただけの画像をロードするのは素晴らしいことです。たとえば、ListView の場合は 50kb、SelectedView の場合はフルサイズです。そのような方法で、ユーザーエクスペリエンスははるかに優れていると思います.

4

2 に答える 2

1

https://github.com/nostra13/Android-Universal-Image-Loader . Universal Image Loader は非同期で、キャッシュを使用し、LazyLoading の改良版です。

イメージをメモリまたはディスクにキャッシュできます。画像をキャッシュするためのカスタム フォルダーを提供することもできます。Universal Image Loader には、その他の構成オプションも用意されています。

https://github.com/thest1/LazyList . 遅延読み込みを使用することもできます。

パフォーマンスとスムーズなスクロールのために、ViewHolder を使用します。http://developer.android.com/training/improving-layouts/smooth-scrolling.html .

http://www.youtube.com/watch?v=wDBM6wVEO70。リストビュー用ビューホルダーの話。

于 2013-03-22T12:24:42.583 に答える
0

ユニバーサル イメージ ローダーを使用できます。バックグラウンド スレッドで画像をダウンロードできます。基本的にListView、いくつかのデフォルトのサムネイルを表示し、各画像がダウンロードされると、UIL はサムネイルを実際の画像に置き換えます。

そうすれば、画像のダウンロード中にユーザーが閉じ込められることはありませんが、すべてのサムネイルを表示するには、画像の小さなバリエーションの提供を開始するまで、すべての大きな画像をダウンロードする必要があります.

于 2013-03-22T12:23:09.253 に答える