自用Android圖片處理

ImageView的常用屬性:
①、andorid:src  設置圖片來源。屬性值爲android:src="@drawable/圖片名稱" 
一般使用png或jpg格式的圖片,可以使用的字符:[a-z0-9_],圖片名稱不帶後綴名,不能以數字開頭,不能使用大寫字母
如果要在代碼中設置:用ImageView對象調用setImageResource(R.drawable.xxx);
②、android:adjustViewBounds  用於設置 ImageView 是否調整自己的邊界,來保持所顯示圖片的長寬比例(不會截斷圖片)。默認false.
③、android:maxHeight  設置 ImageView 的最大高度。需要先設置android:adjustViewBounds爲true,否則不起作用。

④、andorid:maxWidth   設置 ImageView 的最大寬度。需要先設置android:adjustViewBounds爲true,否則不起作用。


備註:如果想設置圖片爲固定大小,並且要保持圖片的寬高比,則:
1. 設置adjustViewBounds屬性爲true;
2. 設置maxHeight,maxWidth;
3. 設置layout_width="wrap_content",layout_height="wrap_content".

⑤、 android:background  設置背景,src上的圖片會覆蓋在background的上方, 
在代碼中設置用 ImageView調用setBackgroundResource(R.drawable.xxx);

⑥、android:scaleType : 縮放類型  設置所顯示的圖片如何縮放或移動,以適應ImageView的大小。

設置所顯示的圖片如何縮放或移動,以適應ImageView的大小。可選項:fitCenter(默認值)、fitStart 、 fitEnd、 fitXY 、 center、centerCrop居中裁剪、centerInside、matrix
注意:要把layout_width和layout_height設置爲  match_parent  或  固定值  時
android:scaleType屬性纔有效.  不能設置爲wrap_content.
  • matrix(原尺寸多餘截掉)保持原圖大小、從ImageView的左上角的點開始,以矩陣形式繪圖。 超出部分會被截掉.
  • fitXY (伸縮填滿):把圖片按照指定的大小在View中顯示,拉伸(壓縮)顯示圖片,不保持原比例填滿View. 如果未指定長寬,則受限於手機屏幕.


  • fitStart:把圖片按比例擴大(縮小)到View的寬度(或高度),不截斷,顯示在View的上部分位置 
  • fitCenter (默認值):把圖片按比例擴大(縮小)到View的寬度(或高度),不截斷,居中顯示 
  • fitEnd :把圖片按比例擴大(縮小)到View的寬度(或高度),不截斷,顯示在View的下部分位置 

  • center(原尺寸居中,多餘的截掉) : 以原圖的幾何中心點和ImagView的幾何中心點爲基準,按圖片的原來size居中顯示不縮放.  當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示. 當圖片小於View 的長寬時,只顯示原圖片的尺寸,不拉伸。 
  • centerCrop(按比例伸縮,多餘截掉並使  圖填滿Imageview) :以原圖的幾何中心點和ImagView的幾何中心點爲基準,按比例擴大(圖片小於View的寬時)圖片的size。 居中顯示,使得圖片長 (寬)等於或大於View的長(寬),並按View的大小截取圖片。 當原圖的size大於ImageView時,按比例縮小圖片,使得長寬中有一向等於ImageView,另一向大於ImageView。 實際上,使得原圖的size大於等於ImageView .
                簡言之,均衡的縮放圖像(保持圖像原始比例),使圖片的兩個座標(寬、高)都大於等於 相應的視圖座標。使圖像位於視圖的中央。
  • centerInside(大圖按比例縮小後完整居中,小圖不變) :以原圖的幾何中心點和ImagView的幾何中心點爲基準,將圖片的內容完整居中顯示, 如果原圖較大,通過按比例縮小原來的size使得圖片長(寬)等於或小於ImageView的長(寬);原圖較小則不放大(fitCenter會將小圖放大).


總結:上述屬性值中的1,2,5
1個:不保證尺寸和比例,只填滿,不截: fitXY
2個: 保持原圖尺寸超出部分截掉的:matrix,center
5個:按比例縮放的:
fitCenter( 不截,小圖會放大) ,  fitStart( 不截),  fitEnd( 不截),
centerCrop(滿後超截)  ,   centerInside(不截,小圖不放大)
用電子表格比較:
比較方面
比例不變
尺寸不變
超出截掉
小圖可放大
大圖可縮小
填滿高度或寬度
填滿整個ImageView
fitCenter
y
n
n
y
y
y
n
centerInside
y
n
n
y
y
y
n
























根據需求來決定使用何種縮放模式.

發佈了33 篇原創文章 · 獲贊 14 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章