編輯:Android開發實例
前言
本章內容是android.widget.ImageView,為早前發布版本的完整版,版本為Android 3.1 r1,翻譯來自"cnmahj"和"農民伯伯"。
ImageView
譯者署名: cnmahj、農民伯伯
譯者博客: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
如果為真,會剪切圖片以適應內邊距的大小。(譯者注:是否截取指定區域用空白代替。單獨設置無效果,需要與scrollY一起使用,效果如下,實現代碼見代碼部分:
)
android:maxHeight
為視圖提供最大高度的可選參數。(譯者注:單獨使用無效,需要與setAdjustViewBounds一起使用。如果想設置圖片固定大小,又想保持圖片寬高比,需要如下設置:
1) 設置setAdjustViewBounds為true;
2) 設置maxWidth、MaxHeight;
3) 設置設置layout_width和layout_height為wrap_content。)
android:maxWidth
為視圖提供最大寬度的可選參數。
android:scaleType
控制為了使圖片適合 ImageView 的大小,應該如何變更圖片大小或移動圖片。一定是下列常量之一:
常量
值
描述
matrix
0
用矩陣來繪圖
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)
(譯者注:設置透明度)
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)
設置圖片的等級,當圖片來自於 LevelListDrawable 時。(譯者注:使用參見這裡)
參數
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 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>
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.Object
java.lang.Enum<E extends java.lang.Enum<E>>
android.widget.ImageView.ScaleType
類概述
將圖片邊界縮放,以適應視圖邊界時的可選項。
常量
public static final ImageView.ScaleType CENTER
在視圖中使圖像居中,不執行縮放。 在 XML 中可以使用的語法: android:scaleType="center"。
public static final ImageView.ScaleType CENTER_CROP
均衡的縮放圖像(保持圖像原始比例),使圖片的兩個坐標(寬、高)都大於等於 相應的視圖坐標(負的內邊距)。圖像則位於視圖的中央。 在 XML 中可以使用的語法:android:scaleType="centerCrop"。
public static final ImageView.ScaleType CENTER_INSIDE
均衡的縮放圖像(保持圖像原始比例),使圖片的兩個坐標(寬、高)都小於等於 相應的視圖坐標(負的內邊距)。圖像則位於視圖的中央。 在 XML 中可以使用的語法:android:scaleType="centerInside"。
public static final ImageView.ScaleType FIT_CENTER
使用 CENTER 方式縮放圖像。 在 XML 中可以使用的語法: android:scaleType="fitCenter"。
public static final ImageView.ScaleType FIT_END
使用 END 方式縮放圖像。 在 XML 中可以使用的語法: android:scaleType="fitEnd"。
public static final ImageView.ScaleType FIT_START
使用 START 方式縮放圖像。 在 XML 中可以使用的語法:android:scaleType="fitStart"。
public static final ImageView.ScaleType FIT_XY
使用 FILL 方式縮放圖像。 在 XML 中可以使用的語法: android:scaleType="fitXY"。
public static final ImageView.ScaleType MATRIX
繪制時,使用圖像矩陣方式縮放。圖像矩陣可以通過 setImageMatrix(Matrix) 設置。在 XML 中可以使用的語法: android:scaleType="matrix"。
補充
文章精選
Android API之ImageView.ScaleType代碼演示
轉自:http://www.cnblogs.com/over140/archive/2011/06/08/2075054.html
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
andriod短信整合備份發送到gmail郵箱,需要在andoid手機配置好gmail郵箱 github代碼 https://github.com/zhwj184
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩