?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
ImageView
譯者博客:http://blog.toolib.net/cnmahj
版本:Android 3.1 r1
?
結構
繼承關系
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 |
如果為真,會剪切圖片以適應內邊距的大小。(譯者注:是否截取指定區(qū)域用空白代替。單獨設置無效果,需要與scrollY一起使用,效果如下,實現(xiàn)代碼見代碼部分:
|
|||||||||||||||||||||||||||
android:maxHeight |
為視圖提供最大高度的可選參數(shù)。(譯者注:單獨使用無效,需要與setAdjustViewBounds一起使用。如果想設置圖片固定大小,又想保持圖片寬高比,需要如下設置: 1)? 設置setAdjustViewBounds為true; 2)? 設置maxWidth、MaxHeight; 3)? 設置設置layout_width和layout_height為wrap_content。) |
|||||||||||||||||||||||||||
android:maxWidth |
為視圖提供最大寬度的可選參數(shù)。 |
|||||||||||||||||||||||||||
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 ()
???????? 返回視圖的可繪制對象;如果沒有關聯(lián)可繪制對象,返回空。
?
???????? public Matrix getImageMatrix ()
???????? 返回視圖的選項矩陣。當繪制時,應用于視圖的可繪制對象。如果沒有矩陣, 函數(shù)返回空。不要更改這個矩陣。如果你要為可繪制對象設置不同的矩陣, 請調用 setImageMatrix()。
?
???????? public ImageView.ScaleType getScaleType ()
返回當前 ImageView 使用的縮放類型。
相關 XML 屬性
??? ???????? android:scaleType
參見
?? ??????????? ImageView.ScaleType
?
???????? public void invalidateDrawable (Drawable dr)
使指定的可繪制對象失效。
參數(shù)
dr ?? 要設為失效的可繪制對象。
?
???????? public void jumpDrawablesToCurrentState ()
調用與視圖相關的所有可繪制對象的Drawable.jumpToCurrentState()方法。
?
???????? public int[] onCreateDrawableState (int extraSpace)
為當前視圖生成新的 Drawable 狀態(tài)時發(fā)生。當視圖系統(tǒng)檢測到緩存的可繪制對象失效時,調用該方法.你可以使用 getDrawableState() 方法重新取得當前的狀態(tài)。
參數(shù)
extraSpace ???? 如果為非零,該值為你要在返回值的數(shù)組中存放的你自己的狀態(tài)信息的數(shù)量。
返回值
返回保存了視圖的當前 Drawable 狀態(tài)的數(shù)組。
?
???????? public void setAdjustViewBounds (boolean adjustViewBounds)
當你需要在 ImageView 調整邊框時保持可繪制對象的比例時,將該值設為真。
參數(shù)
adjustViewBounds ???????? 是否調整邊框,以保持可繪制對象的原始比例。
相關 XML 屬性
??? ???????? android:adjustViewBounds
?
public void setAlpha (int alpha)
(譯者注:設置透明度)
?
public void setBaseline (int baseline)
???????? 設置部件頂部邊界文本基線的偏移量。這個值覆蓋setBaselineAlignBottom(boolean)設置的屬性值。
參數(shù)
baseline 使用的基線,或不提供設置為-1。
相關 XML屬性
?? ??????????? android:baseline
參見
??? ???????? setBaseline(int)
?
public void setBaselineAlignBottom (boolean aligned)
設置是否設置視圖底部的視圖基線。設置這個值覆蓋setBaseline()的所有調用。
參數(shù)
aligned ?? 如果為true,圖像視圖將基線與父控件底部邊緣對齊。
相關 XML屬性
??? ???????? android:baselineAlignBottom
?
public final void setColorFilter (int color)
為圖片設置著色選項。采用SRC_ATOP合成模式。
參數(shù)
color ?????? 應用的著色顏色。
相關 XML 屬性
??? android:tint
?
public void setColorFilter (ColorFilter cf)
為圖片應用任意顏色濾鏡。
參數(shù)
cf ??? 要應用的顏色濾鏡(可能為空)
?
public final void setColorFilter (int color, PorterDuff.Mode mode)
為圖片設置著色選項。
參數(shù)
color ?????? 應用的著色顏色。
mode ????? 如何著色。標準模式為 SRC_ATOP。
相關 XML 屬性
??? android:tint
?
???????? public void setImageBitmap (Bitmap bm)
設置位圖作為該 ImageView 的內容。
參數(shù)
bm 設置的位圖。
?
???????? public void setImageDrawable (Drawable drawable)
設置可繪制對象為該 ImageView 顯示的內容。
參數(shù)
drawable ??????? 設置的可繪制對象。
?
???????? public void setImageLevel (int level)
設置圖片的等級,當圖片來自于 LevelListDrawable 時。(譯者注:使用參見這里)
參數(shù)
level ??????? 圖片的新的等級。
?
public void setImageMatrix (Matrix matrix)
???????? (譯者注:矩陣變換)
?
???????? public void setImageResource (int resId)
通過資源ID設置可繪制對象為該 ImageView 顯示的內容。
注意:該操作讀取位圖,并在 UI 線程中解碼,因此可能導致反應遲緩。 如果反應遲緩,可以考慮用 setImageDrawable(Drawable)、 setImageBitmap(Bitmap) 或者 BitmapFactory 代替。
參數(shù)
resId ?????? 可繪制對象的資源標識。
相關 XML 屬性
?? ??????????? android:src
?
???????? public void setImageState (int[] state, boolean merge)
???????? (譯者注:設置視圖的可見和不可見,使用參見這里)
?
???????? public void setImageURI (Uri uri)
設置指定的 URI 為該 ImageView 顯示的內容。
注意:該操作讀取位圖,并在 UI 線程中解碼,因此可能導致反應遲緩。 如果反應遲緩,可以考慮用 setImageDrawable(Drawable)、 setImageBitmap(Bitmap) 或者 BitmapFactory 代替。
參數(shù)
uri ? 圖像的 URI。
?
public void setMaxHeight (int maxHeight)
用于設置該視圖支持的最大高度的可選參數(shù)。只有 setAdjustViewBounds(boolean) 為真時有效。要設置圖像最大尺寸為 100×100,并保持原始比率,做法如下:
1)???????? 設置 adjustViewBounds 為真;
2)???????? 設置 maxWidth 和 maxHeight 為 100;
3)???????? 設置寬、高的布局參數(shù)為 WRAP_CONTENT。
注意,如果原始圖像較小,即使設置了該參數(shù),圖像仍然要比 100×100 小。如果要設置圖片為 固定大小,需要在布局參數(shù)中指定大小,并使用 setScaleType(ImageView.ScaleType) 函數(shù)來檢測,如何 將其調整到適當?shù)拇笮 ?/span>
參數(shù)
maxHeight ???? 該視圖的最大高度。
相關 XML 屬性
??? android:maxHeight
?
???????? public void setMaxWidth (int maxWidth)
用于設置該視圖支持的最大寬度的可選參數(shù)。只有 setAdjustViewBounds(boolean) 為真時有效。要設置圖像最大尺寸為 100×100,并保持原始比率,做法如下:
4)???????? 設置 adjustViewBounds 為真;
5)???????? 設置 maxWidth 和 maxHeight 為 100;
6)???????? 設置寬、高的布局參數(shù)為 WRAP_CONTENT。
注意,如果原始圖像較小,即使設置了該參數(shù),圖像仍然要比 100×100 小。如果要設置圖片為 固定大小,需要在布局參數(shù)中指定大小,并使用 setScaleType(ImageView.ScaleType) 函數(shù)來檢測,如何 將其調整到適當?shù)拇笮 ?/span>
參數(shù)
maxWidth ????? 該視圖的最大寬度。
相關 XML 屬性
??????????????????????????? android:maxWidth
?
public void setScaleType (ImageView.ScaleType scaleType)
控制圖像應該如何縮放和移動,以使圖像與 ImageView 一致。
參數(shù)
scaleType ?????? 需要的縮放方式。
相關 XML 屬性
??? android:scaleType
?
public void setSelected (boolean selected)
改變視圖的選中狀態(tài)。視圖有選中和未選中兩個狀態(tài)。注意,選擇狀態(tài)不同于焦點。 典型的選中的視圖是象 ListView 和 GridView 這樣的 AdapterView 中顯示的 內容;選中的內容會顯示為高亮。
參數(shù)
selected ????????? 為真,將視圖設為選中狀態(tài);否則為假。
?
受保護方法
protected void drawableStateChanged ()
在視圖狀態(tài)的變化影響到所顯示可繪制對象的狀態(tài)時調用該方法。
覆蓋該方法時,要確保調用了父類的該方法。
?
protected void onDraw (Canvas canvas)
實現(xiàn)該方法,用于自己繪制內容。
參數(shù)
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())
參數(shù)
widthMeasureSpec ??????? 父視圖要求的橫向空間大小.該要求由 View.MeasureSpec 進行了編碼處理。
heightMeasureSpec ?????? 父視圖要求的縱向空間大小.該要求由 View.MeasureSpec 進行了編碼處理。
?
protected boolean onSetAlpha (int alpha)
透明度改變時執(zhí)行。子類可以使用該方法指定透明度值,然后返回真; 在調用 onDraw() 時,使用該透明度值。如果返回假,則先在不可見的緩存中繪制視圖, 完成該請求;看起來不錯,但是可能相對于在子類中繪制要慢。默認實現(xiàn)返回假。
參數(shù)
alpha ????? 應用到視圖的透明度值 (0…255)。
返回值
??? 如果該類可以繪制該阿爾法值返回真。
?
protected boolean setFrame (int l, int t, int r, int b)
為視圖指定大小和位置。 該方法有布局調用。
參數(shù)
l ????? 左側位置,相對于父容器。
t ???? 頂部位置,相對于父容器。
r ???? 右側位置,相對于父容器。
b ???? 底部位置,相對于父容器。
返回值
??? ???????? true 如果新的大小和位置與之前的不同,返回真。
?
protected boolean verifyDrawable (Drawable dr)
如果你的視圖子類顯示自己的可繪制對象,他應該重寫此方法并為自己的每個可繪制對象返回真。該函數(shù)允許為這些可繪制對象準備動畫效果。
重寫此方法時,要保證調用其父類的該方法。
參數(shù)
dr ?? 待校驗的可繪制對象.如果是你顯示的對象之一,返回真;否則返回調用父類的返回值。
返回值
??? boolean 如果可繪制對象已經顯示在視圖上了,返回真;否則返回假,不允許動畫效果。
?
補充
???????? 文章精選
???????? ???????? Android ImageView 加邊框
?????????????????? Android用ImageView顯示本地和網上的圖片
?????????????????? imageView動畫效果
???????? 示例代碼
?????????????????? 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>
?
?