在我的應用程序中,如果預先加載某些圖像是有利的。我在AsyncTask中正確執行此操作,因爲它是在官方文檔中編寫的。但是我有一個關於何時應該設置的問題/問題。XML與setImageDrawable/setImageBitmap
我會顯示代碼片段。請注意,它是簡化的(它們的互操作性在我的真實代碼中更好,它檢查空值等)。
讓我們看到原來的(非預裝)版第一:
<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圖像(...)被調用。預加載版本在調用之後設置圖像。有什麼區別嗎?由於這個原因,系統可能會跳過一些自動縮放或其他事情嗎?
我明白了,但在我的代碼不同的是,ImageView的構造函數(即**基於XML的解決方案**)之前被調用(或過程?)的setContentView。在編程解決方案中,我在** setContentView()之後調用setImageDrawable(或setImageBitmap - 都適用於我)**。 我知道Android會自動縮放和其他東西與位圖和佈局,所以我只是想知道哪些被跳過,因爲對setImageDrawable/setImageBitmap的晚調用。 –
@Thomas Calc:如果您檢查代碼,您會看到所有'setImage'變體都自己執行_auto縮放和其他stuff_。沒有功能會被跳過。 –