結構
繼承關係
public class View.OnClickListner extends View
java.lang.Object
android.view.View
android.widget.ImageView
直接子類
ImageButton, QuickContactBadge
間接子類
ZoomButton
類概述
顯示任意圖像,例如圖標。ImageView類可以加載各種來源的圖片(如資源或圖片庫),需要計算圖像的尺寸,比便它可以在其他佈局中使用,並提供例如縮放和著色(渲染)各種顯示選項。
嵌套類
enum ImageView.ScaleType
將圖片邊界縮放,以適應視圖邊界時的可選項
XML屬性
屬性名稱 | 描述 | |||||||||||||||||||||||||||
android:adjustViewBounds | 設置該屬性為真可以在 ImageView 調整邊界時保持圖片的縱橫比例。(譯者註:需要與maxWidth、MaxHeight一起使用,否則單獨使用沒有效果。) | |||||||||||||||||||||||||||
android:baseline | 視圖內基線的偏移量 | |||||||||||||||||||||||||||
android:baselineAlignBottom | 如果為true,圖像視圖將基線與父控件底部邊緣對齊。 | |||||||||||||||||||||||||||
android:cropToPadding | 如果為真,會剪切圖片以適應內邊距的大小。(譯者註:是否截取指定區域用空白代替。單獨設置無效果,需要與scrollY一起使用,效果如下,實現代碼見代碼部分: ) | |||||||||||||||||||||||||||
android:maxHeight | 為視圖提供最大高度的可選參數。(譯者註:單獨使用無效,需要與setAdjustViewBounds一起使用。如果想設置圖片固定大小,又想保持圖片寬高比,需要如下設置: 1) 設置setAdjustViewBounds為true; 2) 設置maxWidth、MaxHeight; 3) 設置設置layout_width和layout_height為wrap_content。) | |||||||||||||||||||||||||||
android:maxWidth | 為視圖提供最大寬度的可選參數。 | |||||||||||||||||||||||||||
android:scaleType | 控制為了使圖片適合 ImageView 的大小,應該如何變更圖片大小或移動圖片。一定是下列常量之一:
(譯者註:設置圖片的填充方式。) | |||||||||||||||||||||||||||
android:src | 設置可繪製對象作為 ImageView 顯示的內容 | |||||||||||||||||||||||||||
android:tint | 為圖片設置著色顏色。(譯者註:將圖片渲染成指定的顏色。見下圖: 左邊為原圖,右邊為設置後的效果,見後面代碼。) |
公共方法
public final void clearColorFilter ()
public int getBaseline ()
返回部件頂端到文本基線的偏移量。如果小部件不支持基線對齊,該方法返回 -1。
返回值
小部件頂端到文本基線的偏移量;或者是 -1 當小部件不支持基線對齊時。
public boolean getBaselineAlignBottom ()
返回當前視圖基線是否將考慮視圖的底部。
參見
setBaselineAlignBottom(boolean)
public Drawable getDrawable ()
返回視圖的可繪製對象;如果沒有關聯可繪製對象,返回空。
public Matrix getImageMatrix ()
返回視圖的選項矩陣。當繪製時,應用於視圖的可繪製對象。如果沒有矩陣, 函數返回空。不要更改這個矩陣。如果你要為可繪製對象設置不同的矩陣, 請調用 setImageMatrix()。
public ImageView.ScaleType getScaleType ()
返回當前 ImageView 使用的縮放類型。
相關 XML 屬性
android:scaleType
參見
ImageView.ScaleType
public void invalidateDrawable (Drawable dr)
使指定的可繪製對象失效。
參數
dr 要設為失效的可繪製對象。
public void jumpDrawablesToCurrentState ()
調用與視圖相關的所有可繪製對象的Drawable.jumpToCurrentState()方法。
public int[] onCreateDrawableState (int extraSpace)
為當前視圖生成新的 Drawable 狀態時發生。當視圖系統檢測到緩存的可繪製對象失效時,調用該方法.你可以使用 getDrawableState() 方法重新取得當前的狀態。
參數
extraSpace 如果為非零,該值為你要在返回值的數組中存放的你自己的狀態信息的數量。
返回值
返回保存了視圖的當前 Drawable 狀態的數組。
public void setAdjustViewBounds (boolean adjustViewBounds)
當你需要在 ImageView 調整邊框時保持可繪製對象的比例時,將該值設為真。
參數
adjustViewBounds 是否調整邊框,以保持可繪製對象的原始比例。
相關 XML 屬性
android:adjustViewBounds
public void setAlpha (int alpha)
(譯者註:設置透明度)
public void setBaseline (int baseline)
設置部件頂部邊界文本基線的偏移量。這個值覆蓋setBaselineAlignBottom(boolean)設置的屬性值。
參數
baseline 使用的基線,或不提供設置為-1。
相關 XML屬性
android:baseline
參見
setBaseline(int)
public void setBaselineAlignBottom (boolean aligned)
設置是否設置視圖底部的視圖基線。設置這個值覆蓋setBaseline()的所有調用。
參數
aligned 如果為true,圖像視圖將基線與父控件底部邊緣對齊。
相關 XML屬性
android:baselineAlignBottom
public final void setColorFilter (int color)
為圖片設置著色選項。採用SRC_ATOP合成模式。
參數
color 應用的著色顏色。
相關 XML 屬性
android:tint
public void setColorFilter (ColorFilter cf)
為圖片應用任意顏色濾鏡。
參數
cf 要應用的顏色濾鏡(可能為空)
public final void setColorFilter (int color, PorterDuff.Mode mode)
為圖片設置著色選項。
參數
color 應用的著色顏色。
mode 如何著色。標準模式為 SRC_ATOP。
相關 XML 屬性
android:tint
public void setImageBitmap (Bitmap bm)
設置位圖作為該 ImageView 的內容。
參數
bm 設置的位圖。
public void setImageDrawable (Drawable drawable)
設置可繪製對象為該 ImageView 顯示的內容。
參數
drawable 設置的可繪製對象。
public void setImageLevel (int level)
參數
level 圖片的新的等級。
public void setImageMatrix (Matrix matrix)
(譯者註:矩陣變換)
public void setImageResource (int resId)
通過資源ID設置可繪製對象為該 ImageView 顯示的內容。
注意:該操作讀取位圖,並在 UI 線程中解碼,因此可能導致反應遲緩。 如果反應遲緩,可以考慮用 setImageDrawable(Drawable)、setImageBitmap(Bitmap) 或者 BitmapFactory 代替。
參數
resId 可繪製對象的資源標識。
相關 XML 屬性
android:src
public void setImageState (int[] state, boolean merge)
public void setImageURI (Uri uri)
設置指定的 URI 為該 ImageView 顯示的內容。
注意:該操作讀取位圖,並在 UI 線程中解碼,因此可能導致反應遲緩。 如果反應遲緩,可以考慮用 setImageDrawable(Drawable)、setImageBitmap(Bitmap) 或者 BitmapFactory 代替。
參數
uri 圖像的 URI。
public void setMaxHeight (int maxHeight)
用於設置該視圖支持的最大高度的可選參數。只有 setAdjustViewBounds(boolean) 為真時有效。要設置圖像最大尺寸為 100×100,並保持原始比率,做法如下:
1) 設置 adjustViewBounds 為真;
2) 設置 maxWidth 和 maxHeight 為 100;
3) 設置寬、高的佈局參數為 WRAP_CONTENT。
注意,如果原始圖像較小,即使設置了該參數,圖像仍然要比 100×100 小。如果要設置圖片為 固定大小,需要在佈局參數中指定大小,並使用setScaleType(ImageView.ScaleType) 函數來檢測,如何 將其調整到適當的大小。
參數
maxHeight 該視圖的最大高度。
相關 XML 屬性
android:maxHeight
public void setMaxWidth (int maxWidth)
用於設置該視圖支持的最大寬度的可選參數。只有 setAdjustViewBounds(boolean) 為真時有效。要設置圖像最大尺寸為 100×100,並保持原始比率,做法如下:
4) 設置 adjustViewBounds 為真;
5) 設置 maxWidth 和 maxHeight 為 100;
6) 設置寬、高的佈局參數為 WRAP_CONTENT。
注意,如果原始圖像較小,即使設置了該參數,圖像仍然要比 100×100 小。如果要設置圖片為 固定大小,需要在佈局參數中指定大小,並使用setScaleType(ImageView.ScaleType) 函數來檢測,如何 將其調整到適當的大小。
參數
maxWidth 該視圖的最大寬度。
相關 XML 屬性
android:maxWidth
public void setScaleType (ImageView.ScaleType scaleType)
控制圖像應該如何縮放和移動,以使圖像與 ImageView 一致。
參數
scaleType 需要的縮放方式。
相關 XML 屬性
android:scaleType
public void setSelected (boolean selected)
改變視圖的選中狀態。視圖有選中和未選中兩個狀態。注意,選擇狀態不同於焦點。 典型的選中的視圖是象 ListView 和 GridView 這樣的 AdapterView 中顯示的 內容;選中的內容會顯示為高亮。
參數
selected 為真,將視圖設為選中狀態;否則為假。
受保護方法
protected void drawableStateChanged ()
在視圖狀態的變化影響到所顯示可繪製對象的狀態時調用該方法。
覆蓋該方法時,要確保調用了父類的該方法。
protected void onDraw (Canvas canvas)
實現該方法,用於自己繪製內容。
參數
canvas 用於繪製背景的畫布。
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
評估視圖及其內容,以決定其寬度和高度.此方法由 measure(int, int) 調用,子類可以重載以提供更精確、更有效率的衡量其內容尺寸的方法。
約定: 覆蓋該方法時,必須調用 setMeasuredDimension(int, int) 方法來保存評估結果的視圖的寬度和高度.如果忘記將導致 measure(int, int) 方法拋出IllegalStateException異常。要有效的利用父類的 onMeasure(int, int)方法。
基類測量的是背景的大小,除非 MeasureSpec 允許超過背景.子類應該重寫 onMeasure(int, int) 方法,以為其內容提供更適合的大小。
如果重寫了該方法,子類要確保其高度和寬度大於等於視圖的最小高度和寬度. (getSuggestedMinimumHeight() 和 getSuggestedMinimumWidth())
參數
widthMeasureSpec 父視圖要求的橫向空間大小.該要求由 View.MeasureSpec 進行了編碼處理。
heightMeasureSpec 父視圖要求的縱向空間大小.該要求由 View.MeasureSpec 進行了編碼處理。
protected boolean onSetAlpha (int alpha)
透明度改變時執行。子類可以使用該方法指定透明度值,然後返回真; 在調用 onDraw() 時,使用該透明度值。如果返回假,則先在不可見的緩存中繪製視圖, 完成該請求;看起來不錯,但是可能相對於在子類中繪製要慢。默認實現返回假。
參數
alpha 應用到視圖的透明度值 (0…255)。
返回值
如果該類可以繪製該阿爾法值返回真。
protected boolean setFrame (int l, int t, int r, int b)
為視圖指定大小和位置。 該方法有佈局調用。
參數
l 左側位置,相對於父容器。
t 頂部位置,相對於父容器。
r 右側位置,相對於父容器。
b 底部位置,相對於父容器。
返回值
true 如果新的大小和位置與之前的不同,返回真。
protected boolean verifyDrawable (Drawable dr)
如果你的視圖子類顯示自己的可繪製對象,他應該重寫此方法並為自己的每個可繪製對象返回真。該函數允許為這些可繪製對象準備動畫效果。
重寫此方法時,要保證調用其父類的該方法。
參數
dr 待校驗的可繪製對象.如果是你顯示的對象之一,返回真;否則返回調用父類的返回值。
返回值
boolean 如果可繪製對象已經顯示在視圖上了,返回真;否則返回假,不允許動畫效果。
補充
文章精選
示例代碼
android:tint
<ImageView android:background="@android:color/white" android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
<ImageView android:layout_marginLeft="5dp" android:background="@android:color/white" android:tint="#ffff00"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
android:cropToPadding
<ImageView android:background="@android:color/white" android:scrollY="-10px" android:cropToPadding="true"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
<ImageView android:background="@android:color/white" android:scrollY="10px" android:cropToPadding="true"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
<ImageView android:paddingTop="10px" android:background="@android:color/white" android:scrollY="10px"android:cropToPadding="true" android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
<ImageView android:paddingTop="10px" android:background="@android:color/white" android:scrollY="10px"android:cropToPadding="false" android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
沒有留言:
張貼留言