1. 程式人生 > >API 23 view.View——屬性分析

API 23 view.View——屬性分析

public class

View

extends Object

implements Drawable.Callback KeyEvent.Callback AccessibilityEventSource

Added in API level 1

java.lang.Object

   ↳ android.view.View

已知直接子類

MediaRouteButton

Space

SurfaceView

TextureView

ViewStub

概述

AndroidUI介面都是由ViewViewGroup

及其派生類組合而成的。

其中,View是所有UI元件的基類,而ViewGroup是容納這些元件的容器,其本身也是從View派生出來的子類。

View類是使用者介面的基礎構件。

View表示螢幕上的一塊矩形區域,負責繪製這個區域和事件處理。

可以說View類是使用者介面類中最重要的一個類。

View物件是Android平臺中使用者介面體現的基礎單位。

View類是它稱為“widgets(工具)”的子類的基礎,它們提供了諸如文字輸入框和按鈕之類的UI物件的完整實現。

ViewGroup類同樣為其被稱為“Layouts(佈局)”的子類奠定了基礎,它們提供了象流式佈局、表格佈局以及相對佈局之類的佈局架構。

一般來說,開發Android應用程式的UI介面都不會直接使用ViewViewGroup,而是使用這兩大基類的派生類

巢狀類】

View.AccessibilityDelegateAPI 14

View.BaseSavedStateAPI 1

View.DragShadowBuilderAPI 11

View.MeasureSpecAPI 1

介面  View.OnApplyWindowInsetsListenerAPI 20

介面  View.OnAttachStateChangeListener API 12

介面  View.OnClickListener

API 1

介面  View.OnContextClickListenerAPI 23  

介面  View.OnCreateContextMenuListenerAPI 1

介面  View.OnDragListenerAPI 11

介面  View.OnFocusChangeListenerAPI 1

介面  View.OnGenericMotionListenerAPI 12

介面  View.OnHoverListenerAPI 14

介面  View.OnKeyListenerAPI 1

介面  View.OnLayoutChangeListeneAPI 11

介面  View.OnLongClickListenerAPI 1

介面  View.OnScrollChangeListenerAPI 23

介面  View.OnSystemUiVisibilityChangeListenerAPI 11

介面  View.OnTouchListenerAPI 1

XML屬性】

API 19

android:accessibilityLiveRegion

關聯方法:setAccessibilityLiveRegion(int mode)

屬性說明:指示在該檢視更改時是否應通知使用者可訪問性服務。輔助功能

可以是整型值(integer),如:100

也可以引用一個包含此型別值的資源(格式:@[package:]type:name)或主題屬性(格式:?[package][type:]name)。

還可以引用一個資源(格式:@[package:]type:name)或者是包含這種型別值的主題屬性(格式:?[package][type:]name)。

可以是下列常量值之一:

none0ACCESSIBILITY_LIVE_REGION_NONE不通知。預設。

polite1ACCESSIBILITY_LIVE_REGION_POLITE通知

assertive2ACCESSIBILITY_LIVE_REGION_ASSERTIVE中斷語音立即宣告

對應的全域性屬性資源符號是accessibilityLiveRegion

設定此檢視的活動區域模式。這向可訪問性服務指示它們是否應當自動通知使用者關於檢視的內容描述或文字的改變,或者檢視的孩子的內容描述或文字(如果適用的話)。

例如,在具有顯示“密碼不正確”通知的TextView的登入螢幕中,該檢視應標記為具有

ACCESSIBILITY_LIVE_REGION_POLITE模式的活動區域。

要停用此資料檢視的更改通知,請使用ACCESSIBILITY_LIVE_REGION_NONE。 這是大多數檢視的預設活動區域模式。

要指示應通知使用者有更改,請使用ACCESSIBILITY_LIVE_REGION_POLITE

如果檢視的更改應中斷正在進行的語音並立即通知使用者,請使用ACCESSIBILITY_LIVE_REGION_ASSERTIVE

API 22

android:accessibilityTraversalAfter

關聯方法:setAccessibilityTraversalAfter(int afterId)

屬性說明:輔助功能設定在輔助功能遍歷中訪問此檢視的檢視的ID。 螢幕閱讀器必須在此檢視的內容之前訪問另一檢視的內容。

對應的全域性屬性資源符號是accessibilityTraversalAfter

例如,如果檢視B被設定為在檢視A之後,則螢幕閱讀器將在遍歷B的整個內容之前遍歷A的整個內容,不論其正在使用什麼遍歷策略。

沒有指定前/後關係的檢視按螢幕閱讀器確定的順序遍歷。

將此檢視設定為對輔助功能不重要的檢視之後,或者此檢視對於輔助功能不重要。則此屬性將不起作用,因為螢幕閱讀器會忽略不重要的檢視。

API 22 

android:accessibilityTraversalBefore

關聯方法:setAccessibilityTraversalBefore(int beforeId)

屬性說明:輔助功能設定在輔助功能遍歷中訪問此檢視的檢視的ID。 螢幕閱讀器必須在此檢視的內容之前訪問此檢視的內容。

對應的全域性屬性資源符號是accessibilityTraversalAfter

例如,如果檢視B被設定為在檢視A之前,則螢幕閱讀器將在遍歷A的整個內容之前遍歷B的整個內容,不論其正在使用什麼遍歷策略。

沒有指定前/後關係的檢視按螢幕閱讀器確定的順序遍歷。

將此檢視設定為對輔助功能不重要的檢視之後,或者此檢視對於輔助功能不重要。則此屬性將不起作用,因為螢幕閱讀器會忽略不重要的檢視。

API 11

android:alpha

關聯方法:setAlpha(float alpha)

屬性說明:檢視透明度,值在0-1之間。0為完全透明,1為完全不透明。

必須是浮點值(float),如:1.2

也可以引用一個包含此型別值的資源(格式:@[package:]type:name)或主題屬性(格式:?[package][type:]name)。

對應的全域性屬性資源符號是alpha

注意:將alpha設定為半透明值(0 <alpha <1)可能會產生顯著的效能影響,特別是對於大檢視。最好使用alpha屬性保守和瞬態,如在衰落動畫的情況。

對於具有頻繁變化的alpha的檢視,例如在漸變動畫期間,強烈建議出於效能原因,覆蓋hasOverlappingRendering()以返回false(如果適當),或者在動畫持續時間的檢視上設定圖層型別。在版本M及以下版本中,使用alpha渲染未分層檢視的預設路徑可能會增加渲染成本的多毫秒,即使對於簡單或小檢視也是如此。從M開始,LAYER_TYPE_HARDWARE自動應用於呈現級別的檢視。

如果這個檢視覆蓋onSetAlphaint)返回true,那麼這個檢視負責應用不透明度本身。

在版本LOLLIPOP_MR1及以下版本中,請注意,如果檢視由圖層支援並與圖層油漆相關聯,那麼將Alpha值設定為小於1.0將取代圖層油漆的Alpha值。

M開始,設定一個半透明的alpha值將剪輯檢視到其邊界,除非檢視從hasOverlappingRendering()返回false

API 1

android:background

關聯方法:setBackgroundResource(int resid)

屬性說明設定檢視背景。可以是完整的drawable資源(比如png圖、.9圖、xml描述狀態列表等等)或者是純色。

可以引用另一個資源(格式:@[package:]type:name)或主題屬性(格式:?[package][type:]name

可以是顏色值(color),格式#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。

對應的全域性屬性資源符號是background

setBackgroundResource (int resid)API 1

將背景設定為給定資源。資源應該引用一個Drawable物件或0來刪除背景。

setBackgroundColor (int color)API 1

給檢視設定背景色。

setBackgroundDrawable (Drawable background)API 1-API16

API 16棄用,使用setBackground()代替

setBackground(Drawable background)API 16

給檢視設定背景,或刪除背景。

如果背景有填充,此檢視的填充設定為背景的填充。

但是,當刪除背景時,不會觸控此view的填充。如需要填充,請使用setPaddingintintintint

設定背景圖片,圖片來源於drawable

.setBackgroundDrawable(getResources().getDrawable(R.drawable.a));

轉換字串為int(顏色);

.deleteFilghtBg.setBackgroundColor(Color.parseColor("#FF0000"));

可以通過以下兩種方法設定背景為透明:"@android:color/transparent""@null"。注意TextView預設是透明的,不用寫此屬性,但是Buttom/ImageButton/ImageView想透明的話就得寫這個屬性了。

API 21

android:backgroundTint

關聯方法:setBackgroundTintList(ColorStateList tint)

屬性說明:將背景渲染成指定的顏色。即設定背景色調。

必須是顏色值(color),格式#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。

也可以引用一個包含此型別值的資源格式:@[package:]type:name或主題屬性(格式:?[package][type:]name)。

對應的全域性屬性資源符號是backgroundTint

tint可以為null以清除色調。

如果view沒有背景,設定backgroudTint無效。

getResource().getColorStateList(R.color.色值);

ColorStateList物件可以在XML中定義,像color一樣使用,它能根據它應用到的View物件的狀態實時改變顏色。

<selector xmlns:android="http://schemas.android.com/apk/res/android" >//根元素。包含一個或多個<item>元素。

<item>定製特定狀態的color

android:color16進位制顏色,由RGB值指定,可帶Alpha

#RGB#ARGB#RRGGBB#AARRGGBB

android:state_pressed按下狀態

android:state_focused聚焦狀態

android:state_selected選中狀態

android:state_active

android:state_checkable可勾選狀態

android:state_checked勾選狀態

android:state_enabled可用狀態(能接受觸控/點選事件)

android:state_window_focused應用程式視窗有焦點時使用(應用程式在前臺)

注意:記住一點,StateList中第一個匹配當前狀態的item會被使用。因此,如果第一個item沒有任何狀態特性的話,那麼它將每次都被使用,這也是為什麼預設的值必須總是在最後。

API 21

android:backgroundTintMode

關聯方法:setBackgroundTintMode(PorterDuff.Mode tintMode)

屬性說明:設定背景渲染的模式。設定背景色調的混合模式。預設模式src_in

必須是下列常量之一:D指原本在Canvas上的內容dstS指繪製輸入的內容srcaalpha通道,cRGB各個通道。

src_over3   [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]

src_in5[Sa * Da, Sc * Da]

src_atop   9[Da, Sc * Da + (1 - Sa) * Dc]

multiply14[Sa * Da, Sc * Dc]

screen15[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]

add16Saturate(S + D)

tintMode可以為null以清除色調。

它對應的全域性資源符號是backgroundTintMode

PorterDuff.Mode.CLEAR    0不繪製[0, 0]

PorterDuff.Mode.SRC      1顯示上層繪製[Sa, Sc]

PorterDuff.Mode.DST      2顯示下層繪製[Da, Dc]

PorterDuff.Mode.SRC_OVER  3上下層都顯示,上層居上顯示[Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]

PorterDuff.Mode.DST_OVER 4上下層都顯示,下層居上顯示[Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc]

PorterDuff.Mode.SRC_IN   5取上層繪製交集[Sa * Da, Sc * Da]

PorterDuff.Mode.DST_IN   6取下層繪製交集[Sa * Da, Sa * Dc]

PorterDuff.Mode.SRC_OUT  7取上層繪製非交集[Sa * (1 - Da), Sc * (1 - Da)]

PorterDuff.Mode.DST_OUT  8取下層繪製非交集[Da * (1 - Sa), Dc * (1 - Sa)]

PorterDuff.Mode.SRC_ATOP 9取上層交集部分與下層非交集部分[Sa, Sa * Dc + Sc * (1 - Da)]

PorterDuff.Mode.DST_ATOP 10取下層交集部分與上層非交集部分  [Da, Sc * Da + (1 - Sa) * Dc]

PorterDuff.Mode.XOR      11去除交集部分                    [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]

PorterDuff.Mode.DARKEN   12取兩層全部區域,交集部分加深     [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)]

PorterDuff.Mode.LIGHTEN  13取兩層全部區域,交集部分點亮     [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)]

PorterDuff.Mode.MULTIPLY 14取交集,顯示疊加                [Sa * Da, Sc * Dc]

PorterDuff.Mode.SCREEN   15取兩層全部區域,交集部分透明[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]

PorterDuff.Mode.ADD      16取兩層全部區域,交集部分疊加Saturate(S + D)

PorterDuff.Mode.OVERLAY  17

如果設定了android:background,那麼控制元件的背景顏色就會直接修改。

如果設定了android:backgroundTint,那麼就會將設定的顏色和原來的背景進行一個疊加的過程,至於如何疊加,就是上面的android:backgroundTintMode

低版本時,需要引入support-V7jar包。並把控制元件定義為:android.support.v7.widget.AppCompat...

setSupportBackgroundTintList();

setSupportBackgroundTintMode();

API 1

android:clickable

關聯方法:setClickable(boolean clickable)

屬性說明:設定是否響應點選事件

必須是布林值(boolean),true”或“false”。

也可以引用一個包含此型別值的資源格式:@[package:]type:name或主題屬性(格式:?[package][type:]name)。

對應的全域性<