2016-08-20 81 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