2013-08-26 75 views
1

我有一個ViewPager,我用它來瀏覽幾個ImageView(大約1000),每個ImageView加載一個全屏的位圖。我使用options.inSampleSize對圖像進行二次採樣,並使用memcache進行性能分析,但這仍然不夠快。我試圖避免的是,當用戶快速瀏覽視圖時,用戶會看到空白的ImageView。Android上的漸進式圖片加載

我想知道是否有辦法在請求的圖像加載時提供部分渲染圖像(或低質量)。

我注意到Android畫廊合併了類似的東西(特別是在放大和縮小時,加載看起來類似於在Web上加載漸進式JPEG),但我一直未能找到任何相關信息。

回答

0

Android目前不提供在解碼期間獲取中間圖像的方法(例如逐行JPEG)。你只能得到一張最終圖像。

您已經在使用inSampleSize來獲取更粗略的圖像版本。這使解碼有希望更快,雖然沒有時間保證:它使用libjpeg。你有沒有測量每個圖像解碼需要多長時間?你有沒有嘗試設置inPreferQualityOverSpeed爲false?你是否重複使用相同的位圖(也可能會加速解碼)。您還可以檢查inSampleSize是否在速度上有所不同。

在任何情況下,如果您想要更詳細的相同圖像版本,任何獲取低質量圖像的工作都會很快丟失,因爲您必須從頭開始解碼。因此,您想要將解碼限制爲可見圖像及其近鄰,以便您可以在沒有空白圖像的情況下進行滾動。

+0

儘管您沒有在默認情況下做到這一點,但仍有多種方法可以對圖像進行部分解碼。不過,這絕對不會比加載完整圖像更快。 @Cam提到了Gallery應用程序 - 它首先從MediaStore加載一個較小的,以前調整大小的圖像的版本。 –