API 25 (Android 7.1.1 API) view.View——属性分析

Android API 25 (Android 7.1.1)


View

public class View

extends Object implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource

Added in API level 1

 

java.lang.Object

   ↳android.view.View

 

已知直接子类:

AnalogClock

ImageView

KeyboardView

MediaRouteButton

ProgressBar

Space

SurfaceView

TabItem

TextView

TextureView

ViewGroup

ViewStub

 

【概述】

此类表示用户界面组件的基本构建块。视图在屏幕上占据一个矩形区域,负责绘图和事件处理。 View是窗口小部件的基类,用于创建交互式UI组件(按钮,文本字段等)。ViewGroup子类是布局的基类,它是保存其他视图(或其他ViewGroup)并定义其布局属性的不可见容器。

 

【内部类】

类     View.AccessibilityDelegate

这个类代表一个委托,可以在一个View中注册,通过组合而不是通过继承来增强辅助功能。

类     View.BaseSavedState

需要在onSaveInstanceState()中保存和恢复自己的状态的派生类的基类。 

类     View.DragShadowBuilder

创建系统在拖放操作期间显示的图像。 

类     View.MeasureSpec

MeasureSpec封装了从父节点传递给子节点的布局要求。

接口   View.OnApplyWindowInsetsListener

用于以自定义方式在视图上应用窗口插入的侦听器。

接口   View.OnAttachStateChangeListener

当此视图从其窗口附加或分离时要调用的回调的接口定义。

接口   View.OnClickListener

单击视图时调用的回调的接口定义。

接口   View.OnContextClickListener

在视图被上下文单击时调用的回调的接口定义。

接口   View.OnCreateContextMenuListener

当正在构建此视图的上下文菜单时要调用的回调的接口定义。

接口   View.OnDragListener

将拖动分派到此视图时调用的回调的接口定义。

接口   View.OnFocusChangeListener

当视图的焦点状态更改时调用的回调的接口定义。

接口   View.OnGenericMotionListener

将通用运动事件分派到此视图时调用的回调的接口定义。

接口   View.OnHoverListener

将悬停事件分派到此视图时要调用的回调的接口定义。

接口   View.OnKeyListener

将硬件键事件分派到此视图时调用的回调的接口定义。

接口   View.OnLayoutChangeListener

当视图的布局边界由于布局处理而更改时要调用的回调的接口定义。

接口   View.OnLongClickListener

当视图被单击并保持时要调用的回调的接口定义。

接口   View.OnScrollChangeListener

当视图的滚动XY位置改变时调用的回调的接口定义。

接口   View.OnSystemUiVisibilityChangeListener

状态栏更改可见性时要调用的回调的接口定义。

接口   View.OnTouchListener

将触摸事件分派到此视图时调用的回调的接口定义。

 

【XML属性】

android:  accessibilityLiveRegion

API 19

关联方法:setAccessibilityLiveRegion(int mode)

属性说明:辅助功能 当视图更改时是否应通知用户。

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

也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。

还可以引用一个资源(格式:@[package:]type:name)或者是包含这种类型值的主题属性(格式:?[package][type:]name)。

可以是下列常量值之一:

none      0  ACCESSIBILITY_LIVE_REGION_NONE      不通知。默认。

polite    1  ACCESSIBILITY_LIVE_REGION_POLITE    通知

assertive 2  ACCESSIBILITY_LIVE_REGION_ASSERTIVE 中断语音立即声明

对应的全局属性资源符号是accessibilityLiveRegion

 

设置视图的活动区域模式。这向可访问性服务指示它们是否应当自动通知用户关于视图的内容描述或文本的改变,或者视图的孩子的内容描述或文本(如果适用的话)。

例如,在具有显示“密码不正确”通知的TextView的登录屏幕中,该视图应标记为具有

ACCESSIBILITY_LIVE_REGION_POLITE模式的活动区域。

要停用此数据视图的更改通知,请使用ACCESSIBILITY_LIVE_REGION_NONE。 这是大多数视图的默认活动区域模式。

要指示应通知用户有更改,请使用ACCESSIBILITY_LIVE_REGION_POLITE

如果视图的更改应中断正在进行的语音并立即通知用户,请使用ACCESSIBILITY_LIVE_REGION_ASSERTIVE

 


android:  accessibilityTraversalAfter

API 22

关联方法:setAccessibilityTraversalAfter(int afterId)

属性说明:辅助功能设置在辅助功能遍历中访问此视图的之后视图的ID。 屏幕阅读器必须在此视图的内容之前访问另一视图的内容。

对应的全局属性资源符号是accessibilityTraversalAfter

 

例如,如果视图B被设置为在视图A之后,则屏幕阅读器将在遍历B的整个内容之前遍历A的整个内容,不论其正在使用什么遍历策略。

没有指定前/后关系的视图按屏幕阅读器确定的顺序遍历。

将此视图设置为对辅助功能不重要的视图之后,或者此视图对于辅助功能不重要。则此属性将不起作用,因为屏幕阅读器会忽略不重要的视图。

 


android:  accessibilityTraversalBefore

API 22

关联方法:setAccessibilityTraversalBefore(int beforeId)

属性说明:辅助功能设置在辅助功能遍历中访问此视图的之前视图的ID。 屏幕阅读器必须在此视图的内容之前访问此视图的内容。

对应的全局属性资源符号是accessibilityTraversalAfter

 

例如,如果视图B被设置为在视图A之前,则屏幕阅读器将在遍历A的整个内容之前遍历B的整个内容,不论其正在使用什么遍历策略。

没有指定前/后关系的视图按屏幕阅读器确定的顺序遍历。

将此视图设置为对辅助功能不重要的视图之后,或者此视图对于辅助功能不重要。则此属性将不起作用,因为屏幕阅读器会忽略不重要的视图。

 


android:  alpha

API 11

关联方法: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

 


android:  background

API 1

关联方法: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

 


android:  backgroundTint

API 21

关联方法: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没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后。

 


android:  backgroundTintMode

API 21

关联方法:setBackgroundTintMode(PorterDuff.Mode tintMode)

属性说明:设置背景色调的渲染模式。默认模式src_in

必须是下列常量之一:D指原本在Canvas上的内容dstS指绘制输入的内容srcaalpha通道,cRGB各个通道。

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

src_in      [Sa * Da, Sc * Da]

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

multiply   14 [Sa * Da, Sc * Dc]

screen     15 [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]

add        16 Saturate(S + D)

它对应的全局资源符号是backgroundTintMode

 

tintMode可以为null以清除色调。

 

android.graphics.PorterDuff.Modepublic static final enum PorterDuff.Mode

D指原本在Canvas上的内容dstS指绘制输入的内容srcaalpha通道,cRGB各个通道。

 

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值