結構
繼承關系
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
的大小,應該如何變更圖檔大小或移動圖檔。一定是下列常量之一:
常量
值
matrix
用矩陣來繪圖
fitxy
1
拉伸圖檔(不按比例)以填充view的寬高
fitstart
2
按比例拉伸圖檔,拉伸後圖檔的高度為view的高度,且顯示在view的左邊
fitcenter
3
按比例拉伸圖檔,拉伸後圖檔的高度為view的高度,且顯示在view的中間
fitend
4
按比例拉伸圖檔,拉伸後圖檔的高度為view的高度,且顯示在view的右邊
center
5
按原圖大小顯示圖檔,但圖檔寬高大于view的寬高時,截圖圖檔中間部分顯示
centercrop
6
按比例放大原圖直至等于某邊view的寬高顯示。
centerinside
7
當原圖寬高或等于view的寬高時,按原圖大小居中顯示;反之将原圖縮放至view的寬高居中顯示。
(譯者注:設定圖檔的填充方式。)
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)
(譯者注:設定透明度)
setbaseline (int baseline)
設定部件頂部邊界文本基線的偏移量。這個值覆寫setbaselinealignbottom(boolean)設定的屬性值。
baseline
使用的基線,或不提供設定為-1。
相關 xml屬性
android:baseline
參見
setbaseline(int)
setbaselinealignbottom (boolean aligned)
設定是否設定視圖底部的視圖基線。設定這個值覆寫setbaseline()的所有調用。
aligned 如果為true,圖像視圖将基線與父控件底部邊緣對齊。
android:baselinealignbottom
setcolorfilter (int color)
為圖檔設定着色選項。采用src_atop合成模式。
color 應用的着色顔色。
android:tint
setcolorfilter (colorfilter cf)
為圖檔應用任意顔色濾鏡。
cf 要應用的顔色濾鏡(可能為空)
setcolorfilter (int color, porterduff.mode mode)
為圖檔設定着色選項。
mode 如何着色。标準模式為 src_atop。
public void setimagebitmap (bitmap bm)
設定位圖作為該 imageview
的内容。
bm 設定的位圖。
public void setimagedrawable (drawable drawable)
設定可繪制對象為該 imageview
顯示的内容。
drawable 設定的可繪制對象。
public void setimagelevel (int level)
設定圖檔的等級,當圖檔來自于 levellistdrawable
時。(譯者注:使用參見這裡)
level 圖檔的新的等級。
setimagematrix (matrix matrix)
(譯者注:矩陣變換)
public void setimageresource (int resid)
通過資源id設定可繪制對象為該 imageview
注意:該操作讀取位圖,并在 ui
線程中解碼,是以可能導緻反應遲緩。
如果反應遲緩,可以考慮用 setimagedrawable(drawable)、 setimagebitmap(bitmap)
或者 bitmapfactory
代替。
resid 可繪制對象的資源辨別。
android:src
public void setimagestate (int[] state, boolean merge)
(譯者注:設定視圖的可見和不可見,使用參見這裡)
public void setimageuri (uri uri)
設定指定的 uri
為該 imageview 顯示的内容。
uri 圖像的 uri。
setmaxheight (int maxheight)
用于設定該視圖支援的最大高度的可選參數。隻有 setadjustviewbounds(boolean)
為真時有效。要設定圖像最大尺寸為 100×100,并保持原始比率,做法如下:
1)
設定 adjustviewbounds
為真;
2)
設定 maxwidth
和 maxheight 為 100;
3)
設定寬、高的布局參數為 wrap_content。
注意,如果原始圖像較小,即使設定了該參數,圖像仍然要比 100×100
小。如果要設定圖檔為 固定大小,需要在布局參數中指定大小,并使用 setscaletype(imageview.scaletype)
函數來檢測,如何
将其調整到适當的大小。
maxheight 該視圖的最大高度。
android:maxheight
public void setmaxwidth (int maxwidth)
用于設定該視圖支援的最大寬度的可選參數。隻有 setadjustviewbounds(boolean)
4)
5)
6)
maxwidth 該視圖的最大寬度。
android:maxwidth
setscaletype (imageview.scaletype scaletype)
控制圖像應該如何縮放和移動,以使圖像與 imageview
一緻。
scaletype 需要的縮放方式。
android:scaletype
setselected (boolean selected)
改變視圖的選中狀态。視圖有選中和未選中兩個狀态。注意,選擇狀态不同于焦點。
典型的選中的視圖是象 listview
和 gridview 這樣的 adapterview
中顯示的 内容;選中的内容會顯示為高亮。
selected 為真,将視圖設為選中狀态;否則為假。
受保護方法
protected void
drawablestatechanged ()
在視圖狀态的變化影響到所顯示可繪制對象的狀态時調用該方法。
覆寫該方法時,要確定調用了父類的該方法。
ondraw (canvas canvas)
實作該方法,用于自己繪制内容。
canvas 用于繪制背景的畫布。
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)。
傳回值
如果該類可以繪制該阿爾法值傳回真。
setframe (int l, int t, int r, int b)
為視圖指定大小和位置。
該方法有布局調用。
l 左側位置,相對于父容器。
t 頂部位置,相對于父容器。
r 右側位置,相對于父容器。
b 底部位置,相對于父容器。
true 如果新的大小和位置與之前的不同,傳回真。
verifydrawable (drawable dr)
如果你的視圖子類顯示自己的可繪制對象,他應該重寫此方法并為自己的每個可繪制對象傳回真。該函數允許為這些可繪制對象準備動畫效果。
重寫此方法時,要保證調用其父類的該方法。
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>
android:layout_marginleft="5dp"
android:tint="#ffff00"
android:scrolly="-10px"
android:croptopadding="true"
android:scrolly="10px"
android:paddingtop="10px" android:background="@android:color/white"
android:paddingtop="10px"
android:croptopadding="false"
imageview.scaletype
譯者署名:小易
譯者部落格:http://blog.sina.com.cn/xjtuyi
版本:android 3.1 r1
public static final enum
imageview.scaletype extends
enum<e extends enum<e>>
java.lang.enum<e extends java.lang.enum<e>>
android.widget.imageview.scaletype
将圖檔邊界縮放,以适應視圖邊界時的可選項。
public static final imageview.scaletype
center
在視圖中使圖像居中,不執行縮放。
在 xml 中可以使用的文法:
android:scaletype="center"。
center_crop
均衡的縮放圖像(保持圖像原始比例),使圖檔的兩個坐标(寬、高)都大于等于
相應的視圖坐标(負的内邊距)。圖像則位于視圖的中央。
在 xml 中可以使用的文法:android:scaletype="centercrop"。
center_inside
均衡的縮放圖像(保持圖像原始比例),使圖檔的兩個坐标(寬、高)都小于等于
在 xml 中可以使用的文法:android:scaletype="centerinside"。
fit_center
使用 center
方式縮放圖像。 在 xml
中可以使用的文法: android:scaletype="fitcenter"。
fit_end
使用 end
中可以使用的文法: android:scaletype="fitend"。
fit_start
使用 start
中可以使用的文法:android:scaletype="fitstart"。
fit_xy
使用 fill
中可以使用的文法: android:scaletype="fitxy"。
繪制時,使用圖像矩陣方式縮放。圖像矩陣可以通過 setimagematrix(matrix)
設定。在 xml 中可以使用的文法:
android:scaletype="matrix"。