標籤:android blog http java 使用 os strong 檔案
使用ImageView時經常會用到scaleType屬性,如:
| 123456789 |
<ImageView android:layout_width="50dp" android:layout_height="50dp" android:scaleType="matrix" android:src="@drawable/sample_small" /> |
scaleType屬性的各個值總是記不住之間的區別。今天找點時間總結了一下:
scaleType的屬性值有:matrix fitXY fitStart fitCenter fitEnd center centerCrop centerInside
它們之間的區別如下:
matrix 用矩陣來繪製(從左上方起始的矩陣地區)
fitXY 把圖片不按比例擴大/縮小到View的大小顯示(確保圖片會完整顯示,並充滿View)
fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置(圖片會完整顯示)
fitCenter 把圖片按比例擴大/縮小到View的寬度,置中顯示(圖片會完整顯示)
fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置(圖片會完整顯示)
center 按圖片的原來size置中顯示,當圖片寬超過View的寬,則截取圖片的置中部分顯示,當圖片寬小於View的寬,則圖片置中顯示
centerCrop 按比例擴大/縮小圖片的size置中顯示,使得圖片的高等於View的高,使得圖片寬等於或大於View的寬
centerInside 將圖片的內容完整置中顯示,使得圖片按比例縮小或原來的大小(圖片比View小時)使得圖片寬等於或小於View的寬 (圖片會完整顯示) 附上兩張實驗的: 圖1: 圖片比ImageView大的 圖2: 圖比ImageView小 實驗
MATRIX矩陣可以動態縮小放大圖片來顯示,只是貼出相關語句,縮小圖片:
1 //獲得Bitmap的高和寬 2 int bmpWidth=bmp.getWidth(); 3 int bmpHeight=bmp.getHeight(); 4 5 //設定縮小比例 6 double scale=0.8; 7 //計算出這次要縮小的比例 8 scaleWidth=(float)(scaleWidth*scale); 9 scaleHeight=(float)(scaleHeight*scale); 10 11 //產生resize後的Bitmap對象 12 Matrix matrix=new Matrix(); 13 matrix.postScale(scaleWidth, scaleHeight); 14 Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
1 <ImageView 2 android:id="@+id/image" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:scaleType="center" 6 android:src="@drawable/candle" 7 />
** 要注意一點,Drawable檔案夾裡面的圖片命名是不能大寫的