如果我预加载某些图像,这对我的应用程序是有利的。我在 AsyncTask 中正确地执行了此操作,因为它是在官方文档中编写的。但我有一个关于何时应该设置它们的问题/疑问。
我将展示代码片段。请注意,它已简化(它们的互操作性在我的真实代码中更好,它检查空值等)。
让我们先看看原始(非预加载)版本:
<ImageView
android:id="@+id/imageViewMyGraphicalImageElement"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop"
android:src="@drawable/my_graphical_element" >
</ImageView>
预加载版本具有以下 XML(请注意缺少 src 属性):
<ImageView
android:id="@+id/imageViewMyGraphicalImageElement"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop">
</ImageView>
以及来自预加载代码的片段:
sBitmap = bitmapBitmapFactory.decodeResource(context.getResources(), R.drawable.my_graphical_element, options);
// 'sBitmap' is a Bitmap reference, while 'options' is BitmapFactory.Options
最后是我设置的地方:
setContentView(R.layout.main);
...
ImageView imageViewMyGraphicalImageElement= (ImageView) findViewById(R.id.imageViewMyGraphicalImageElement);
imageViewMyGraphicalImageElement.setImageBitmap(sBitmap);
问题:显然,基于 xml 的解决方案在调用 setContentView(...)之前就知道图像。预加载版本在调用之后设置图像。有什么区别吗?是否可以因此跳过系统完成的某些自动缩放或其他操作?