1 示例
<ImageView?
? ? android:id="@+id/img_1"?
? ? android:layout_width="fill_parent"?
? ? android:layout_height="wrap_content"?
? ? android:adjustViewBounds="true"?
? ? android:scaleType="centerInside"?
? ? android:src="@drawable/img_bg" />
網(wǎng)絡上下載下來的圖片自適應:android:adjustViewBounds=“true”(其詳細解釋在下面)
<ImageView
? ? android:id="@+id/dynamic_item_image"
? ? android:layout_width="wrap_content"
? ? android:layout_height="wrap_content"
? ? android:layout_gravity="top"
? ? android:layout_marginTop="5dip"
? ? android:adjustViewBounds="true"
? ? android:background="@drawable/imageview_background" />
另外鉴逞,android:background="@drawable/imageview_background"是給圖片加了一個邊框,其中imageview_background.xml:
<?xmlversion="1.0" encoding="utf-8"?>
<shape? xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="@color/white"/>
<padding
android:left="5.0dip"
android:top="5.0dip"
android:bottom="5.0dip" />
</shape>
顯示任意圖像惋嚎,例如圖標冲甘。ImageView類可以加載各種來源的圖片(如資源或圖片庫)扛或,需要計算圖像的尺寸洲劣,比便它可以在其他布局中使用,并提供例如縮放和著色(渲染)各種顯示選項空幻。
// scaleType屬性既可以在 XML 中設置烁峭,也可以在代碼中設置
android:scaleType="centerInside"? ? ? ? ? //XML中
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);? ? //代碼中
(1)以FIT_開頭的4種秕铛,它們的共同點是都會對圖片進行縮放约郁;
(2)以CENTER_開頭的3種,它們的共同點是居中顯示但两,圖片的中心點會與ImageView的中心點重疊鬓梅;
(3)ScaleType.MATRIX,用矩陣來繪圖谨湘。
(1)ScaleType.FIT_CENTER——默認:圖片會被等比縮放到能夠填充ImageView的寬高绽快,并居中展示。(因為圖片寬大于高紧阔,被縮放到ImageView的寬高并居中展示坊罢,上下會留白;如果圖片的高大于寬擅耽,居中顯示就會在左右留白活孩。)
(2)ScaleType.FIT_START:圖片等比縮放到ImageView大小,并放置在ImageView的上邊或左邊展示乖仇。(因為圖片寬大于高憾儒,下半部分留白;如果圖片高大于寬乃沙,右半部份留白航夺。)
(3)ScaleType.FIT_END:圖片等比縮放到ImageView寬高,并放置在控件的下邊或右邊展示崔涂。(因為圖片寬大于高阳掐,上半部分留白;如果圖片高大于寬,左半部分留白缭保。)
(4)ScaleType.FIT_XY:不按比例拉伸圖片完全填充ImageView的寬高汛闸。
(5)ScaleType.CENTER:不使用縮放,按原圖展示圖片艺骂;如果圖片寬高小于ImageView的寬高诸老,那么圖片會被居中顯示。
(6)ScaleType.CENTER_CROP——常用模式:按比例放大原圖直至某邊ImageView的寬高展示钳恕。
(7)ScaleType.CENTER_INSIDE:當原圖的寬或高等于ImageView的寬或高時别伏,按原圖大小居中展示;反之將原圖縮放至ImageView的居中展示忧额。(當圖片大于ImageView的寬或高的厘肮,效果與ScaleType.FIT_CENTER的效果相同;如果圖片是小于ImageView大小睦番,會出來這兩個模式下的差別类茂,如兩種模式下的第二個圖。)
(8)ScaleType.MATRIX:需要與ImageView.setImageMatrix(Matrix matrix) 配合使用托嚣,因為該模式需要用于指定一個變換矩陣用于指定圖片如何展示巩检。其實前面的7種模式都是通過ImageView在內(nèi)部生成了相應的變換矩陣,等于是提供了該模式的一種特定值示启,使用這個模式只要傳入相應矩陣兢哭,也就能實現(xiàn)上述七種顯示效果。
// 在使用時夫嗓,需要先調(diào)用
imageView.setScaleType(ImageView.ScaleType.MATRIX);
// 再調(diào)用
imageView.setImageMatrix(matrix);
// 注意順序不要搞錯迟螺,否則會出現(xiàn)問題的
imageView.setScaleType(ImageView.ScaleType.MATRIX);? //設置為矩陣模式
Matrix matrix = new Matrix();? ? ? ? ? //創(chuàng)建一個單位矩陣
matrix.setTranslate(100, 100);? ? ? ? ? //平移x和y各100單位
matrix.preRotate(30);? ? ? ? ? ? ? ? ? //順時針旋轉(zhuǎn)30度
imageView.setImageMatrix(matrix);? ? ? //設置并應用矩陣