天天看點

【轉】ImageView.ScaleType屬性

ImageView的Scaletype決定了圖檔在View上顯示時的樣子,如進行何種比例的縮放,及顯示圖檔的整體還是部分,等等。

設定的方式包括:

1. 在layout xml中定義android:scaleType="CENTER"

2. 或在代碼中調用imageView.setScaleType(ImageView.ScaleType.CENTER);

接下來,将對ScaleType的值和對應的顯示效果用最直覺的方式——真圖示範的方法,來進行說明。

下面附上效果圖:

原圖為Pocoyo的頭像,上圖為原圖的size大于ImageView的size,下圖為原圖的size小于ImageView的size

【轉】ImageView.ScaleType屬性

android:adjustViewBounds

ImageView的android:adjustViewBounds屬性為是否保持原圖的長寬比,單獨設定不起作用,需要配合maxWidth或maxHeight一起使用。

[java] ​​view plain​​ ​​copy​​

  1. <ImageView    
  2.         android:id="@+id/imageView1"    
  3.         android:layout_width="fill_parent"    
  4.         android:layout_height="200dip"    
  5.         android:adjustViewBounds="false"    
  6.         android:scaleType="centerInside"//此處每次更改    
  7.         android:src="@drawable/ic_3" />//此處兩幅圖間更改,一副圖的大小較小,另一幅的較大。    
  8.     <ImageView    
  9.         android:id="@+id/imageView2"    
  10.         android:adjustViewBounds="true"    
  11.         android:src="@drawable/ic_3" />//此處兩幅圖間更改,一副圖的大小較小,另一幅的較大。   

 (代碼為了證明,adjustViewBonds單獨設定無影響。)

- - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - -

依本人之見,scaletype的種類分為三類matrix(預設)、fit-X類、和center類。

matrix就不多說。

fit-X類中,

fitStart、fitCenter和fitEnd之間的都是根據需要使原圖改變對ImgView進行适應,按matrix進行繪制,但它們

的差別在于基準不同。fitStart的基準為最上角的點(即matrix方式開始的點)fitCenter的基準點為中間的點

(matrix方式中可以使圖檔居中的點),而fitEnd的基準點為右下角的點(即matrix方式最後繪制點)。

fit-類與下文有出入,實際用到時驗證。

center類

中,center、centerCrop、centerInside都是以原圖的幾何中心點和ImagView的幾何中心點為基準,且隻繪制

ImagView大小的圖像,不同的是是否保持原圖大小和繪圖的目标不同、采取的手段不同。

android:scaleType="center"

保持原圖的大小,顯示在ImageView的中心。當原圖的size大于ImageView的size,超過部分裁剪處理。

android:scaleType="centerCrop"

以填滿整個ImageView為目的,将原圖的中心對準ImageView的中心,等比例放大原圖,直到填滿ImageView為止(指的是ImageView的寬和高都要填滿),原圖超過ImageView的部分作裁剪處理。

android:scaleType="centerInside"

以原圖完全顯示為目的,将圖檔的内容完整居中顯示,通過按比例縮小原圖的size寬(高)等于或小于ImageView的寬(高)。如果原圖的size本身就小于ImageView的size,則原圖的size不作任何處理,居中顯示在ImageView。

android:scaleType="matrix"

不改變原圖的大小,從ImageView的左上角開始繪制原圖,原圖超過ImageView的部分作裁剪處理。

android:scaleType="fitCenter"

把原圖按比例擴大或縮小到ImageView的ImageView的高度,居中顯示

android:scaleType="fitEnd"

android:scaleType="fitStart"

android:scaleType="fitXY"

繼續閱讀