2016-08-20 62 views
0

我正在寫一個多次調用密碼B的android應用程序。Android:爲imageView緩存圖像

因此,我想在某處爲了性能原因緩存圖像'image123'/使應用程序更快,只想加載一次,然後以某種方式從緩存中顯示它。

有沒有辦法實現這一點,而不是一次又一次地加載它?有人知道嗎?

爲了確保圖像總是立即顯示,調用invalidate()(codeline C)是否很重要?我怎樣才能知道圖像在imageView中的顯示時間?

感謝您的幫助提前。

// codeline A 
ImageView imageView = (ImageView) this.findViewById(R.id.imageView); 
// codeline B 
imageView.setImageResource(R.mipmap.image123); 
// codeline C 
imageView.invalidate(); 
+0

您可以使用svg圖像文件進行此類使用。 Svg在第一次使用時加載,然後每次使用該緩存。 –

+0

感謝code-crusher的幫助。有沒有教程或使用SVG圖像的例子? – MBot

+0

只是將您的圖像轉換爲矢量圖像。那些將是.xml文件。將它們放入_drawable_文件夾中。只要將它們應用到.png文件(@ drawable/my_svg):) –

回答

0

有沒有辦法實現這個沒有一次又一次地加載它?

有針對的官方教程:https://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

是重要的調用無效()(代碼行C)只是要確保圖像始終立即顯示?

不,只是設置一個新的圖像資源會自動導致重繪。

怎樣才能知道圖像在imageView中的確切顯示時間?

使用View.post在繪圖完成後立即運行代碼。

+0

感謝F43nd1r爲您的答案。 有沒有一種更容易的方式來存儲圖像在Drawable中,例如在啓動應用程序時,然後每次從緩存中顯示它,或者我必須遵循您提到的緩存位圖教程中的所有步驟? 如何從視圖中完全使用post方法? – MBot

+0

更簡單的方法是不要自己緩存位圖,這是正常的做法。你應該用一個Runnable來調用view.post,它在圖像顯示後做你想做的任何事情。 – F43nd1r