安卓的適配一直是一件頭疼的事情.
特別是圖片.有的時候總是忽大忽小.
以前習慣於從伺服器下載圖片後,再寫一個工具類來縮減成指定的大小,然後放進指定控制項.
其實不用那麼麻煩,ImageView控制項中有一個android:scaleType屬性。
即ImageView.setScaleType(ImageView.ScaleType)
Sdk中介紹作用為:Options for scaling the bounds of an image to the bounds of this view.
大體意思為:一些縮放邊界來控製圖片視圖的界限範圍的選項
說白了,就是控制ImageView的邊界顯示方式.
CENTERCenter the image in the view, but perform no scaling.按圖片的原來size置中顯示,當圖片長/寬超過View的長/寬,則截取圖片的置中部分顯示.CENTER_CROPScale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or larger than the corresponding dimension of the view (minus padding).按比例擴大圖片的size置中顯示,使得圖片長(寬)等於或大於View的長(寬)CENTER_INSIDEScale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or less than the corresponding dimension of the view (minus padding).將圖片的內容完整置中顯示,通過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬FIT_CENTERScale the image using CENTER.把圖片按比例擴大/縮小到View的寬度,置中顯示FIT_ENDScale the image using END.把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置FIT_STARTScale the image using START.把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置FIT_XYScale the image using FILL.把圖片不按比例 擴大/縮小到View的大小顯示MATRIXScale using the image matrix when drawing.用矩陣來繪製
例如:
如果擷取到的圖片的長寬比例是固定的,假設1:1.
設計要去在480*800的解析度上要顯示大小為60*60
那對於的屬性就設定為:
android:layout_width="40dip"android:layout_height="40dip"android:scaleType="fitXY"
這樣,只要你擷取到的圖片的比例是1:1,無論圖片多大,他都會按照60*60的大小來顯示。
(60px在480*800下為40dip,(60 -0.5) / 1.5=…)
這樣就不需要單獨寫一個工具來縮放圖片了,而且在多解析度適配的時候,適應能力也大大加強了。
原文地址:http://www.cnblogs.com/chorrysky/archive/2012/05/11/2496107.html