我剛寫了一個文章爲了這。希望能夠回答你的問題。
https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw
ImageView
有4個API來指定該圖像。哪一個使用?有什麼不同?
- setImageDrawable(可繪製可繪製的)
- setImageBitmap(位圖BM)
- setImageResource(INT渣油)
- setImageURI(URI URI)
ImageView
,由名稱,是用來顯示圖像。但是什麼是圖像?一個Bitmap
是 - 一個圖像,不難理解,我們使用setImageBitmap
爲此目的。但是,在內部,ImageView
有-但不是Bitmap
,這就是setImageDrawable
。當您在內部調用setImageBitmap
時,首先將位圖包裝爲BitmapDrawable
,即IS-A Drawable
,然後調用setImageDrawable
。
這是代碼。
public void setImageBitmap(Bitmap bm) {
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
那麼,3和4 API呢?
您應該已經知道,這是一種創建位圖的方式:從文件路徑,從輸入流,從Uri或從資源文件。
BitmapFactory.decodeFile(String pathName)
BitmapFactory.decodeStream(Inputstream)
BitmapFactory.decodeResource(Resource res, int id)
BitmapFactory.decodeByteArray(byte[] data)
意識到這一點,這是很容易理解setImageResource
/setImageUri
只是同setImageBitmap
。
總結,setImageDrawable
是其他API依賴的原始函數。其他3個只是幫你編寫少量代碼的方法。
此外,請務必記住,ImageView
實際上有-,但不一定是BitmapDrawable
!您可以將任何Drawable
設置爲圖像視圖。
除了設置Drawable
通過Java API,你也可以使用XML屬性設置源Drawable
的ImageView
。看下面的例子。請注意,形狀可以是圖像文件(.png,.jpg,.bmp)或xml文件。
我覺得在這些具體的兩個例子 – 2012-08-17 07:48:09