天天看點

ImageView 用法總結

結構

繼承關系

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一起使用,效果如下,實作代碼見代碼部分:

ImageView 用法總結

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的寬高

ImageView 用法總結

fitstart

2

按比例拉伸圖檔,拉伸後圖檔的高度為view的高度,且顯示在view的左邊

ImageView 用法總結

fitcenter

3

按比例拉伸圖檔,拉伸後圖檔的高度為view的高度,且顯示在view的中間

ImageView 用法總結

fitend

4

按比例拉伸圖檔,拉伸後圖檔的高度為view的高度,且顯示在view的右邊

ImageView 用法總結

center

5

按原圖大小顯示圖檔,但圖檔寬高大于view的寬高時,截圖圖檔中間部分顯示

ImageView 用法總結

centercrop

6

按比例放大原圖直至等于某邊view的寬高顯示。

ImageView 用法總結

centerinside

7

當原圖寬高或等于view的寬高時,按原圖大小居中顯示;反之将原圖縮放至view的寬高居中顯示。

ImageView 用法總結

(譯者注:設定圖檔的填充方式。)

android:src

設定可繪制對象作為 imageview

顯示的内容

android:tint

為圖檔設定着色顔色。(譯者注:将圖檔渲染成指定的顔色。見下圖:

ImageView 用法總結

左邊為原圖,右邊為設定後的效果,見後面代碼。)

公共方法

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"。 

繼續閱讀