简析API属性——API 23 view.View



参考:http://android.xsoftlab.net/reference/android/view/View.html

 

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

TextView

TextureView

ViewGroup

ViewStub

 

概述

AndroidUI界面都是由ViewViewGroup及其派生类组合而成的。

其中,View是所有UI组件的基类,而 ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的子类。

View类是用户接口的基础构件。

View 表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。

  可以说View类是用户接口类中最重要的一个类。

 

View对象是Android平台中用户界面体现的基础单位。

View类是它称为“widgets(工具)”的子类的基础,它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。

ViewGroup类同样为其被称为“Layouts(布局)”的子类奠定了基础,它们提供了象流式布局、表格布局以及相对布局之类的布局架构。

一般来说,开发Android应用程序的UI界面都不会直接使用ViewViewGroup,而是使用这两 大基类的派生类

 

 

【使用视图】

在窗口中所有View排列在一个树里。您可以通过代码或指定一个View树的一个或多个XML布局文件来添加View

 

一旦您创建了一个View树,通常有一些您可能希望执行的常用操作:

·设置属性:例如设置TextView的文本。在view的不同子类里有不同的可用属性和方法;

·设置焦点:框架将处理移动焦点来响应用户输入。把输入焦点放在调用requestFocus()方法的控件上。

·设置监听器:View允许客户制定监听器,当发生了某些事件时得到通知。例如,所有的View会让你设置一个监听器,当View获得或失去焦点时得到通知。你可以使用setOnFocusChangeListener

(android.view.View.OnFocusChangeListener)注册一个监听器。其他View子类提供了更多的专用监听器。例如,Button暴露了一个监听器,当Button被单击时通知客户。

·设置可见性:你可以使用setVisibility(int)来隐藏或显示视图。

注意Android框架负责测量、布局和绘制视图。你不应该调用视图上执行这些操作的方法,除非你实际上是实现ViewGroup

 

【实现一个自定义View

要实现一个自定义的视图,你通常会从提供重写一些标准框架来绘制视图的方法来开始。你不需要覆盖所有这些方法。事实上,你可以首先重写onDraw(android.graphics.Canvas)

 

创建 构造函数 构造函数的一种形式,被称为从代码创建视图时,一种被称为视图填充时的布局文件,第二种形式解析和应用布局文件中定义的任何属性。

        onFinishInflate() 命名一个视图和所有子视图已经从XML文件填充。

 

布局    onMeasure(int, int) View会调用此方法,来确认自己及所有子对象的size

onLayout(boolean, int, int, int, int) View要为所有子对象分配大小和位置时,调用此方法

onSizeChanged(int, int, int, int) Viewsize发生了变化的时候,调用此方法

 

绘制 onDraw(android.graphics.Canvas) View需要呈现内容的时候,调用此方法

 

事件 onKeyDown(int, KeyEvent) 当按键按下时,调用此方法

onKeyUp(int, KeyEvent) 当按键松开时,调用此方法

onTrackballEvent(MotionEvent) 当滚动轨迹球时,调用此方法

onTouchEvent(MotionEvent) 当触摸屏幕时,调用此方法

提示:在模拟器运行状态下,可以通过F6键打开模拟器的轨迹球,然后便可以通过鼠标的移动来模拟轨迹球事件。

焦点 onFocusChanged(boolean, int, android.graphics.Rect) View获取或失去焦点时,调用此方法

onWindowFocusChanged(boolean) 当包含View的窗口获取或失去焦点时,调用此方法

附加 onAttachedToWindow() View附加到一个窗口上时,调用

onDetachedFromWindow() View从窗口脱离时,调用

onWindowVisibilityChanged(int) 当包含View的窗口的可见性发生了变化时,调用此方法

 

onMeasure(int,int)是测量本View和子Viewsize,

onLayout(boolean,int,int,int,int)是分配子Viewsize, position,

onDraw(canvas)是渲染本Viewcontent.

ID

View可以设置一个整数id。这些id通常是分配在布局的XML文件里,并用于在视图树里查找指定的视图。

常见模式:

·在布局文件中定义一个按钮并为其分配一个唯一的id

 <Button

     android:id="@+id/my_button"

     android:layout_width="wrap_content"

     android:layout_height="wrap_content"

     android:text="@string/my_button_text"/>

·在ActivityonCreate方法里,找到按钮。

 Button myButton = (Button) findViewById(R.id.my_button);

View ID不需要独特的树,但至少确保他们在搜索树里是个好做法。

 

【位置】

视图的几何形状是矩形。视图的位置,表示为一对左和上的坐标;两个维度,表示为一个宽度和一个高度。

 

可以通过调用方法getleft()gettop()来获取视图的位置。前者返回左部或者X坐标,后者返回上部或者Y坐标。

这些方法返回的位置都是相对于它的父视图。例如,当getleft()返回20,意味着视图位于父视图左边缘的右边20像素处。

 

此外,提供一些便利的方法避免不必要的计算。即getright()getbottom()。这些方法返回表示视图矩形的右部和底部边缘的坐标。例如,调用getright()类似下面的计算:getleft() + getwidth()

(更多宽度信息可查看Size)

 

【尺寸,外间距,内间距】

视图的sizewidthheight来表示。一个视图实际上拥有两对widthheight值。

 

第一对被称为测量宽度和测量高度。这组维度定义申明其希望在父容器中获得多大的空间(见布局更多细节)。测量尺寸可以通过调用getMeasuredWidth()getMeasuredHeight()来获得。

第一对宽高指离父容器的距离,可以用getMeasuredWidth() and getMeasuredHeight()获得.

第二对是通常讲的宽和高,或者称为绘制宽度和绘制高度。这些尺寸表明了视图在屏幕上绘制时和布局后的实际大小。测量尺寸的大小和绘制尺寸的大小可能不一样。宽度和高度可以通过调用getWidth()getHeight()获得。

第二对宽高指自己的,可以用getWidth() and getHeight()获得.

测量尺寸时,视图会将padding计算在内。padding值通过lefttoprightbottom表达,设置padding可以用于指定视图内容的偏移量。通过调用setPadding(int, int, int, int) 或者setPaddingRelative(int, int, int, int)进行设置,并通过getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom(), getPaddingStart(), getPaddingEnd()查询。

视图支持通过硬编码设置一个内边padding,但不支持以硬编码方式设置外边margin。不过, 视图组ViewGroup提供了相应的方式。可以查看ViewGroupViewGroup.MarginLayoutParams获取更多内容。

 

【布局】

 Android画的操作是由Framework层来进行处理的,整个draw是从根View开始的,ViewGroup向子View发出draw的请求,然后子View负责自己重画它们的invalid区域。Drawing一个Layout必须通过两个步骤:

       1. 测量。measure() 从根节点到叶子节点依次测量,这样每个View都会存有各自的dimension.在我们的程序种我们可以重写onMeasure来设置更为精确的content大小,重写完后必须调用setMeasureDimension来存储View的宽和高 。

       2.布局。layout也是从父节点到子节点,父节点根据刚才传递进来的measure信息来拜访它们的子节点。

 

       当一个视图的measure()方法返回时,它的getMeasuredWidth()getMeasuredHeight() 值必须被设置,以及所有这个视图子节点的值。一个viewmeasure的宽度和高度值必须符合父视图的限制。这确保在度量过程之后,所有父节点接受所有它们的子节点的度量值。一个父视图可能会在其子视图上多次调用measure()方法。比如,父视图可能会通过未指定的尺寸调用measure来找到它们的大小,然后使用实际数值再次调用measure(),如果所有子视图未做限制的尺寸总合过大或过小(也即是,如果子视图之间不能对各自占据的空间达成共识的话,父视图将会干预并且使用第二个过程的规则)。

View.MeasureSpec类用于子View告诉父View它们想如何被测量和怎么放置。而LayoutParams基类只是描述的View的宽和高时多少。对于每一个区域,它可以指定如下值:

·一个确切的数值

·MATCH_PARENT视图想和父视图一样大(减掉padding

·WRAP_CONTENT视图只想有刚好包裹其内容那么大(加上padding

 

对于不同的ViewGroup子类,有相应的LayoutParams子类。例如,AbsoluteLayout LayoutParams有自己的子类添加一个XY值。

 

View.MeasureSpec类封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。

MeasureSpec可以是下面三种模式之一:

UNSPECIFIED父视图来决定其子视图的理想尺寸。比如,一个线性布局可能在它的子视图上调用

measure()on its child,通过设置其高度为UNSPECIFIED 以及一个宽度为EXACTLY 240,来找出这个子视图在给定240像素宽度的情况下需要显示多高。

•  EXACTLY父视图用来给子视图强加一个准确的尺寸。子视图必须使用这个大小,并确保其所有的后代将

适合这个尺寸。

AT_MOST这被父视图用来给子视图强加一个最大尺寸。子视图必须确保它自己以及所有的后代都适合这

个尺寸。

 

调用requestLayout()发起布局。

 

【绘制】Drawing

绘制按照视图树的顺序执行。视图绘制时会先绘制子控件。如果视图的背景可见,视图会在调用onDraw函数之前绘制背景。强制重绘,可以使用invalidate()

 

【事件处理和线程】Event Handing and Threading

一个视图的生命周期如下:

·事件分配给相应视图,视图处理它,并且通知相关监听器

·在处理事件的过程中,如果视图的发生尺寸变化,那么View会调用requestLayout(),向父控件请求再次布局

·类似地,当视图的可见性发生了变化,那么需要调用invalidate(),请求重绘

·不管requestLayout()invalidate()被调用,框架都会对视图重新测量布局绘制。

 

注意:整个视图树是在线程内操作,直接调用其他视图的方法必须在UI线程

跨线程操作必须使用句柄Handler

 

【焦点操作】Focus Handing

框架会处理常规的焦点移动来响应用户输入。包括试图移动或隐藏或新视图可见时改变焦点。

isFocusable() 获知视图能否接受焦点

setFocusable(boolean) 设置视图能否接受焦点

isFocusableInTouchMode() 触摸模式下,获知视图能否接受焦点

setFocusableInTouchMode(boolean)  触摸模式下,设置视图能否接受焦点

 

焦点移动基于就近算法。在极少情况下,默认的算法可能不符合开发者的预想要求,在这种情况下,可以通过在xml布局文件中设置如下四个属性来明确定义属性指向:

nextFocusDown

nextFocusLeft

nextFocusRight

nextFocusUp

 

视图请求焦点可以使用requestFocus()

 

【触摸模式】Touch Mode

当用户操作方向键时最好是活的焦点的组件一些动作来提示用户哪个组件获得了焦点。当设备拥有触摸功能时,用古可以通过触摸来选定组件。这个模式叫做Touch Mode

 

在一个有触摸能力的设备中,一旦用户触摸了屏幕,设备就会进入到"touch mode"

只有isFocusableInTouchMode()true的组件才可以激活焦点,比如editing组件,其他的比如buttons不会获得焦点,它只关心点击操作。任何时候用户点击了方向键,设备就会退出touch模式而进入到按键模式

可以在Activitys中通过isInTouchMode()方法来确定设备是否在触摸模式中。

 

【滚动】Scrolling

框架对期望在内部滚动其内容的视图提供了基本的支持,包括跟踪XY的滚动偏移来画滚动条。

更多细节可以查看scrollBy(int, int), scrollTo(int, int)awakenScrollBars()

 

【标签】Tags

ID不同,标签不是用来识别视图的。标签本质上是可以关联到视图上的额外信息。通常用来方便在视图中存储与视图相关的数据,而不是存放在独立的结构中。

 

【属性】

视图类暴露ALPHA属性,以及几个变换相关的属性,如translation_xtranslation_y。这些属性可以在产权形式以及名称类似的setter/getter方法。这些属性可以用于设置与这些视图相关的渲染相关属性关联的持久性状态。属性和方法也可用于结合动画。

 

【动画】Animation

Android 3.0开始,动画视图的首选方法是使用android.animation这些Animator基类改变实际视图对象的属性,如alphatranslationX,对比3.0之前的Animation基类,不再只显示视图是如何绘制的。特别是ViewPropertyAnimator类使得这些视图动画属性特别容易和高效。

 

你可以使用setAnimation(Animation)startAnimation(Animation)来将动画对象附加到一个视图。动画可以改变缩放、旋转、位移和透明度的属性。

 

【安全】Secunrity

大部分时候应用应该可以确认动作所需要的所有内容比如获得访问的权限,购买东西以及点击广告链接。

不幸的是,一些恶意的应用会视图欺骗用户去操作这些动作,用户不经意的就会操作隐藏在view后面的动作。作为一种补救,框架提供了一种轻的过滤框架来提高比较敏感模块的安全性。

 

可以通过setFilterTouchesWhenObscured(boolean)或则android:filterTouchesWhenObscured来启用过滤机制。启用后,框架会在用户启动另外一个view的时候锁定原先的view。比如当有警告,对话或其他视窗在view上面展示时就不在允许点击view了。在更小的控制颗粒度下。可以重写onFilterTouchEventForSecurity(MotionEvent)来实现你自己的安全策略。

 

也可以查看FLAG_WINDOW_IS_OBSCURED.

 

【总结】

嵌套类】

View.AccessibilityDelegate API 14

View.BaseSavedState API 1

View.DragShadowBuilder API 11

View.MeasureSpec API 1

接口 View.OnApplyWindowInsetsListener API 20

接口 View.OnAttachStateChangeListener API 12

接口 View.OnClickListener API 1

接口 View.OnContextClickListener API 23  

接口 View.OnCreateContextMenuListener API 1

接口 View.OnDragListener API 11

接口 View.OnFocusChangeListener API 1

接口 View.OnGenericMotionListener API 12

接口 View.OnHoverListener API 14

接口 View.OnKeyListener API 1

接口 View.OnLayoutChangeListene API 11

接口 View.OnLongClickListener API 1

接口 View.OnScrollChangeListener API 23

接口 View.OnSystemUiVisibilityChangeListener API 11

接口 View.OnTouchListener API 1

 

XML属性】

androidaccessibilityLiveRegion API 19

关联方法:setAccessibilityLiveRegion(int)

属性说明:指示在该视图更改时是否应通知用户可访问性服务。辅助功能 

none 0 ACCESSIBILITY_LIVE_REGION_NONE 不通知

polite 1 ACCESSIBILITY_LIVE_REGION_POLITE 通知

assertive 2 ACCESSIBILITY_LIVE_REGION_ASSERTIVE 打断语音并通知

 

androidaccessibilityTraversalAfter API 22

关联方法:setAccessibilityTraversalAfter(int)

属性说明:在可访问性遍历之后,设置视图的id。屏幕阅读器必须访问其他视图的内容之前的内容。辅助功能

  

androidaccessibilityTraversalBefore API 22

关联方法:setAccessibilityTraversalBefore(int)

属性说明:在可访问性遍历之前,设置视图的id。屏幕阅读器必须访问其他视图的内容之前的内容。辅助功能

  

androidalpha API 11

关联方法:setAlpha(float)

属性说明:视图透明度,值在0-1之间。0为完全透明,1为完全不透明。

 

androidbackground API 1

关联方法:setBackgroundResource(int)

属性说明设置视图背景。可以是完整的drawable资源(比如png图、.9图、xml描述状态列表等等)或者是纯色。

 

设置背景图片,图片来源于drawable

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

转换字符串为int(颜色);

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

可以通过以下两种方法设置背景为透明:"@android:color/transparent""@null"。注意TextView默认是透明的,不用写此属性,但是Buttom/ImageButton/ImageView想透明的话就得写这个属性了。

 

androidbackgroundTint API 21

关联方法:setBackgroundTintList(ColorStateList)

属性说明:将背景渲染成指定的颜色。即设置背景色调。

如果view没有背景,设置backgroudTint无效。

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

ColorStateList对象可以在XML中定义,像color一样使用,它能根据它应用到的View对象的状态实时改变颜色。

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

<item>定制特定状态的color

android:color 16进制颜色,由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没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后。

 

androidbackgroundTintMode API 21

关联方法:setBackgroundTintMode(PorterDuff.Mode)

属性说明:设置背景渲染的模式。设置背景色调的混合模式。

src_over src_in src_atop multiply screen add

 

PorterDuff.Mode.CLEAR 0 不绘制

PorterDuff.Mode.SRC 1 显示上层绘制

PorterDuff.Mode.DST 2 显示下层绘制

PorterDuff.Mode.SRC_OVER 3 上下层都显示,上层居上显示

PorterDuff.Mode.DST_OVER 4 上下层都显示,下层居上显示

PorterDuff.Mode.SRC_IN 5 取上层绘制交集

PorterDuff.Mode.DST_IN 6 取下层绘制交集

PorterDuff.Mode.SRC_OUT 7 取上层绘制非交集

PorterDuff.Mode.DST_OUT 8 取下层绘制非交集

PorterDuff.Mode.SRC_ATOP 9 取上层交集部分与下层非交集部分

PorterDuff.Mode.DST_ATOP 10 取下层交集部分与上层非交集部分

PorterDuff.Mode.XOR 11 去除交集部分

PorterDuff.Mode.DARKEN 12 取两层全部区域,交集部分加深

PorterDuff.Mode.LIGHTEN 13 取两层全部区域,交集部分点亮

PorterDuff.Mode.MULTIPLY 14 取交集,显示叠加

PorterDuff.Mode.SCREEN 15 取两层全部区域,交集部分透明

PorterDuff.Mode.ADD 16 取两层全部区域,交集部分叠加

PorterDuff.Mode.OVERLAY 17

 

如果设置了android:background,那么控件的背景颜色就会直接修改。    

如果设置了android:backgroundTint,那么就会将设置的颜色和原来的背景进行一个叠加的过程,至于如何叠加,就是上面的android:backgroundTintMode     

低版本时,需要引入support-V7jar包。并把控件定义为:android.support.v7.widget.AppCompat...

setSupportBackgroundTintList();

setSupportBackgroundTintMode();

 

androidclickable API 1

关联方法:setClickable(boolean)

属性说明:设置是否响应点击事件

 

如要设置setClickable(false),一定要放在按扭的setOnClickListener事件之后!

因为setOnClickListener事件会去重写View v,也就是会把setClickable设为TRUE

 

androidcontentDescription API 4

关联方法:setContentDescription(CharSequence)

属性说明设置View的备注说明,作为一种辅助功能提供,为一些没有文字描述的View提供内容简述,如ImageButton。这里在界面上不会有效果,自己在程序中控制,可临时放一点字符串数据。

[Accessbility]警告。可以被TalkBack识别,某些程序通过声音来告诉有视觉障碍的用户。

android控件中没有文本描述的view如果不加android:contentDescription="@string/**"就会有黄色的下划线。

我们可以使用tools:ignore="contentDescription"来忽略这个警告。

 

androidcontextClickable API 23

关联方法:setContextClickable(boolean)

属性说明:设置是否对上下文响应点击事件。

 

androiddrawingCacheQuality API 1

关联方法:setDrawingCacheQuality(int)

属性说明:设置绘图时半透明质量

auto 0 DRAWING_CACHE_QUALITY_AUTO 默认,由框架决定

low 1 DRAWING_CACHE_QUALITY_LOW 低质量,使用较低的颜色深度,消耗更少的内存

high 2 DRAWING_CACHE_QUALITY_HIGH 高质量,使用较高的颜色深度,消耗更多的内存

 

androidduplicateParentState API 1

属性说明:重复父状态。

isDuplicateParentStateEnabled()

如果设置此属性true,将直接从父容器中获取绘图状态(焦点,按下等)。仅仅是获取绘图状态,而没有获取事件,也就是你点一下LinearLayoutButton有被点击的效果,但是不执行点击事件。

就是父控件响应点击事件,子View不响应点击事件,但是颜色要随着点击而发生变化。

   

androidelevation API 21

关联方法:setElevation(float)

属性说明:设置View的深度z。组件浮起来的高度。阴影。

 

androidfadescrollbars API 5

关联方法setScrollbarFadingEnabled(boolean)

属性说明: 定义在ScrollBar没有使用时,是否褪色(隐藏)默认为true

 

如果将其设置为false,那么只要能够滚动,滚动条就会一直显示,不会隐藏。但如果View全部显示完成,不能滚动,则不会显示。

此外,如果配置了android:scrollbarTrackVertical,也就是滚动条的Track,然后设置fadeScrollbars为不隐藏滚动条,那么不仅滚动条不会隐藏,滚动条的Track同样也不会隐藏。

 

androidfadingEdgeLength API 1

关联方法getVerticalFadingEdgeLength()

属性说明:设置边框渐变的长度。

 

androidfilterTouchersWhenObscured API 9

关联方法:setFilterTouchesWhenObscured(boolean)

属性说明:所在窗口被其它可见窗口遮住时,是否过滤触摸事件

 

androidfitsSystemWindows API 1

关联方法:setFitsSystemWindows(boolean)

属性说明:设置布局调整时是否考虑系统窗口(如状态栏)

 

经过具体实验,具体的作用就是你的contentview是否忽略actionbar,title,屏幕的底部虚拟按键,将整个屏幕当作可用的空间。

正常情况,contentview可用的空间是去除了actionbar,title,底部按键的空间后剩余的可用区域;这个属性设置为true,则忽略,false则不忽略

 

androidfocusable          API 1

关联方法:setFocusable(boolean)

属性说明:设置是否可以获得焦点

若有requestFocus()被调用时,后者优先处理。

 

androidfocusableInTouchMode API 1

关联方法:setFocusableInTouchMode(boolean)

属性说明:在触摸模式下配置是否可以获得焦点

 

focusable是切换得到的焦点,focusableInTouchMode是手指点击获得焦点

 

androidforeground API 1

关联方法:setForeground(Drawable)

属性说明:设置景色/背景图片

 

androidforegroundGravity API 1

关联方法:setForegroundGravity(int)

Defines the gravity to apply to the foreground drawable.

topbottomleftrightcentercenter_verticalcentet_horizontal

fill(填充)、fill_vertical(垂直方向填充)、fill_horizontal(水平方向填充)、

clip_vertical垂直方向剪裁)、clip_horizontal(水平方向剪裁)。

 

androidforegroundTint API 21

关联方法:setForegroundTintList(ColorStateList)

属性说明:将前景渲染成指定的颜色。即设置前景色调。   

 

androidforegroundTintMode API 21

关联方法:setForegroundTintMode(PorterDuff.Mode)

属性说明:设置前景渲染的模式。设置前景色调的混合模式。 

src_over 

src_in

src_atop

multiply

screen

add

 

androidhapticFeedbackEnabled API 3

关联方法:setHapticFeedbackEnabled(boolean)

属性说明: 设置触觉反馈是否启用。启用后在点击等事件时会有震动等反馈效果。

HAPTIC_FEEDBACK_ENABLED

 

androidid API 1

关联方法:setId(int)

属性说明设置组件ID,稍后可通过View.findViewById()Activity.findViewById()来检索。

给当前View设置一个在当前layout.xml中的唯一编号,不同的layout.xml之间定义相同的id不会冲突。

 

androidimportantForAccessibility API 16

关联方法:setImportantForAccessibility(int)

属性说明设置View的可访问性的重要性。

auto IMPORTANT_FOR_ACCESSIBILITY_AUTO

yes IMPORTANT_FOR_ACCESSIBILITY_YES

no IMPORTANT_FOR_ACCESSIBILITY_NO

noHideDescendants IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS

 

androidisScrollbarsContainer API 3 滚动集合 true false

关联方法SetScrollContainer(boolean)

属性说明:设置View如果将作为滚动容器,是否可以调整大小。

 

androidkeepScreenOn API 1

关联方法:setKeepScreenOn(boolean)

属性说明: 视图在可见的情况下是否保持唤醒状态。

 

androidlayerType API 11

关联方法:setLayerType(int,Paint)

属性说明: 设置指定层的类型

none 0 LATER_TYPE_NONE 不为这个View树建立单独的layer

software 1 LAYER_TYPE_SOFTWARE Bitmap上对View进行软渲染

hardware 2 LAYER_TYPE_HARDWARE Framebuffer Object上做渲染

两者区别

1、一个是渲染到Bitmap,一个是渲染到FB上。

2hardware可能会有一些操作不支持。

两者相同:

都是开了一个buffer,把View画到这个buffer上面去。

 

androidlayoutDirection API 17

关联方法:setLayoutDirection(int)

属性说明: 定义布局图纸的方向。 ltr rtl inherit locale

ltr LATOUT_DIRECTION_LTR Left-to-Right 从左到右

rtl LATOUT_DIRECTION_RTL Right-to-Left 从右到左

inherit LATOUT_DIRECTION_INHERIT 继承

locale LATOUT_DIRECTION_LOCALE 区域设置

 

AndroidlongClickable API 1

关联方法setLongClickable(boolean)

属性说明:设置是否响应长按事件

 

如果同时设置了onClickonLongClick事件,那么默认情况下长按时两个方法都会被调用

可以再onLongClick事件执行完毕后return true;表示事件已经被处理,这样就不会调用onClick事件了

  

androidminHeight API 1

关联方法setMinHeight(int)

属性说明:设置视图的最小高度

androidminWidth API 1

关联方法setMiniWidth(int)

属性说明:设置视图的最宽度

  

焦点移动是基于一个在给定方向查找最近邻居的算法。如果指定视图不存在,移动焦点时将报运行时错误。可以设置imeOptions= actionDone,这样输入完即跳到下一个焦点。

androidnextFocusLeft API 1

关联方法setNextFocusLeftId(int)

属性说明: 移动焦点时,下一个获取焦点的viewid

androidnextFocusRight API 1

关联方法:setNextFocusRightId(int)

属性说明: 移动焦点时,下一个获取焦点的viewid

androidnextFocusUp API 1

关联方法:setNextFocusUpId(int)

属性说明: 移动焦点时,下一个获取焦点的viewid

androidnextFocusDown API 1

关联方法:setNextFocusDownId(int)

属性说明: 向下移动焦点时,下一个获取焦点的viewid

androidnextFocusForward API 11

关联方法:setNextFocusForwardId(int)

属性说明: 下一个获取焦点的viewid

 

androidonClick API 4

属性说明:点击时从上下文中调用指定的方法。

 

androidpadding API 1

关联方法:setPaddingRelative(int,int,int,int) 参数:lefttoprightbottom

属性说明:设置所有四个边的填充像素。

androidpaddingTop API 1

关联方法:setPaddingRelative(int,int,int,int)

属性说明:设置上边的填充像素。

androidpaddingBottom API 1

关联方法:setPaddingRelative(int,int,int,int)

属性说明:设置下边的填充像素。

androidpaddingLeft API 1

关联方法:setPaddingRelative(int,int,int,int)

属性说明:设置左边的填充像素。

androidpaddingRight API 1

关联方法:setPaddingRelative(int,int,int,int)

属性说明:设置右边的填充像素。

androidpaddingStart API 17

关联方法:setPaddingRelative(int,int,int,int)

属性说明:设置开始处的填充像素。

androidpaddingEnd API 17

关联方法:setPaddingRelative(int,int,int,int)

属性说明:设置结尾处的填充像素。

androidpaddingLeftandroidpaddingStart的区别:

有的语言是按照从右往左的顺序来书写的。在Android  4.2系统之后,GoogleAndroid中引入了RTL布局,更好了支持了由右到左文字布局的显示,为了更好的兼容RTL布局,google推荐使用StartEnd来替代LeftRight,这样应用可以在正常的屏幕和由右到左显示文字的屏幕上都保持一致的用户体验。

 

androidfadingEdge API 1API 14

属性说明:设置拉滚动条时 ,边框渐变的方向 none horizontal vertical

androidrequiresFadingEdge API 14

关联方法:setVerticalFadingEdgeEnabled(boolean)

属性说明定义滚动时边缘是否褪色 none horizontal vertical

 

androidrotation API 11

关联方法:setRotation(float)

属性说明: 设置旋转度数

 

androidrotationX API 11

关联方法:setRotationX(float)

属性说明: 水平旋转度数

 

androidrotationY API 11

关联方法:setRotationY(float)

属性说明: 垂直旋转度数

   

androidsaveEnabled API 1

关联方法: setSaveEnabled(boolean)

属性说明:设置是否在窗口冻结时(如旋转屏幕)保存View的数据,如果你的viewid,那默认系统就会帮你保存。

 

androidscaleX API 11

关联方法:setScaleX(float)

属性说明: 设置X轴缩放。水平方向缩放比例。

 

androidscaleY API 11

关联方法:setScaleY(float)

属性说明: 设置Y轴缩放。竖直方向缩放比例。

 

androidscrollIndicators API 23

关联方法:setScrollIndicators(int)

属性说明:设置当View滚动时,显示的滚动指标。

none top bottom left right start end

 

androidscrollX API 1

属性说明:以像素为单位设置水平方向滚动的的偏移值x方向的滚动偏移。即在水平方向滚动了多少距离。

 

androidscrollY API 1

属性说明:以像素为单位设置垂直方向滚动的的偏移值y方向的滚动偏移。即在竖直方向滚动了多少距离。

 

 

androidscrollbarsAlwaysDrawHorizontalTrack API 1

属性说明:表示是否总是显示水平滚动条的滚动轨道(Track,默认为false

androidscrollbarsAlwaysDrawVerticalTrack API 1

属性说明:表示是否总是显示垂直滚动条的滚动轨道(Track,默认为false

 

通常,如果设置了滚动条的Track,那么Track会随着滚动条一起显示和隐藏。

但如果设置了android:scrollbarAlwaysDrawVerticalTracktrue,则滚动条的Track将一直显示,不会隐藏。

当然,如果没有配置android:scrollbarTrackVertical,即使设置了android:scrollbarAlwaysDrawVerticalTracktrue,也不会有Track显示。

此外,android:fadeScrollbars配置为false,则无论android:scrollbarAlwaysDrawVerticalTrack配置为true还是falseTrack都不会隐藏。

 

androidscrollbarsDefaultDelayBeforeFade API 5

关联方法:setScrollBarDefaultDelayBeforeFade(int)

属性说明:表示滚动条从显示到隐藏的间隔时间,单位为毫秒,如果不设置,默认为300毫秒。

 

androidscrollbarsFadeDuration API 5

关联方法:setScrollBarFadeDuration(int)

属性说明:表示滚动条从滚动条开始隐藏到完全隐藏的间隔时间,单位为毫秒,如果不设置,默认为250毫秒。

 

androidscrollbarsSize API 1

关联方法:setScrollBarSize(int)

属性说明:设置滚动条的尺寸。垂直滚动条的宽度、水平滚动条的高度

 

关于此项配置需要注意的是,如果android:scrollbarThumbVertical配置的是一个.9.png的图片(自身有宽度的Drawable),那么android:scrollbarSize配置会被忽略,只有android:scrollbarThumbVertica配置的是颜色值或者xml时(自身宽度为0Drawable),此项配置才会有效。

 

androidscrollbarsStyle API 1

关联方法:setScrollBarStyle(int)

属性说明:设置滚动条的风格和位置 也是用来设置滚动条的位置,不过不是左右位置,而是混动条和内容之间的相对位置。4组值:insideOverlay(内贴图) insideInset(内插图) outsideOverlay(外贴图) outsideInset(外插图)

对一个View来说,它的内部可用区域是View自身大小再减去padding后的区域

insideOverlay(内贴图) 表示滚动条和View可用区域对齐,且覆盖在View之上

insideInset(内插图) 表示滚动条和View可用区域对齐,但不覆盖在View上,而是将View挤到滚动条内

outsideOverlay(外贴图) 表示滚动条和View可用区域对齐,且覆盖在padding之上

outsideInset(外插图) 表示滚动条和View可用区域对齐,但不覆盖在padding之上,而是将View挤到滚动条内

inside就是滚动条绘制在padding以内;

outside就是不需要绘制在padding以内;

Overlay是贴图,就是直接覆盖在内容的上方,这样内容可能会显示到滚动条下方;

Inset是插图,就是会在对应的padding上加上滚动条的宽度,以不让内容显示到滚动条下面去。

  

自定义滚动条,设置引用可以是一个颜色值,或者是一个Drawable资源。对Drawable资源可以使用.9png图片,也可以使用XML来配置。

ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),其定制的属性为:

androidscrollbarsThumbHorizontal API 1

属性说明:设置水平滚动滑块显示外观drawable对象。

androidscrollbarsThumbVertical API 1

属性说明:设置垂直滚动滑块显示外观drawable对象。

androidscrollbarsTrackHorizontal API 1

属性说明:设置水平滚动条滑动轨道的显示外观drawable对象。

androidscrollbarsTrackVertical API 1

属性说明:设置垂直滚动条滑动轨道的显示外观drawable对象。

 

androidscrollbars API 1

属性说明:设置可显示的滚动条

none

horizontal

vertical

如果scrollbars设置成none,那么其他的滚动条相关的配置都不会有效果。

  

androidsoundEffectsEnabled API 1

关联方法:setSoundEffectsEnabled(boolean)

属性说明: 设置点击或触摸时是否有声音效果

 

androidstateListAnimator API 21

属性说明:View设置state-based animator

 

androidtag API 1

关联方法:setTag(Object)

属性说明设置文本标签。稍后可用View.gatTag()View.findViewWithTag()来检索。

View.gatTag()获取该字符串

View.findViewWithTag()查找该组件

android:tagandroid:id的区别

Id的查找速度更快。只要不在同一个父控件中,tag可以又相同的名字。

Tag不像ID是用标示view的。Tag从本质上来讲是就是相关联的view的额外的信息。它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结构。

Tagstring标识。Id是整数标识。  

 

androidtextAlignment API 17

关联方法:setTextAlignment(int)

属性说明: 设置文本的显示对齐方式。

Inherit gravity textStar textEnd center viewStar viewEnd

 

androidtextDirection API 17

关联方法:setTextDirection(int)

属性说明:定义文本的布局方向。

Inherit firstStrong anyRtl ltr rtl locale firstStrongLtr firstStrongRtl

  

androidtranslationformPivotX API 11

关联方法:setPivotX(float)

属性说明: 相对于一点的水平方向的偏移量

 

androidtranslationformPivotY API 11

关联方法:setPivotY(float)

属性说明: 相对于一点的垂直方向的偏移量

  

androidtransitionName API 21

属性说明:命名一个View,以识别能移动。

 

androidtranslationX API 11

关联方法:setTranslationX(float)

属性说明Viewx的移动距离

 

androidtranslationY API 11

关联方法:setTranslationY(float)

属性说明Viewy的移动距离

 

androidtranslationZ API 21

关联方法:setTranslationZ(float)

属性说明Viewz的移动距离。这个值被添加到View浮起来的高度(海拔)。

 

androidvisibility API 1

关联方法:setVisibility(int)

属性说明:设置是否显示组件。view的可见性。

visible 可见,

invisible 不可见,但占用view的空间

gone 不可见,不占用view的空间

 

......

androidverticalScrollbarPosition API 11

属性说明: 设置垂直滚动条的位置 defaultPosition left right

如果是defaultPosition,则滚动条的位置受到布局RTL配置的影响,如果布局是从右往左,则滚动条显示在left侧,如果布局是从左往右,则滚动条显示在right侧。

  注意:滚动条没有上下位置的设置。对于可水平滚动View(如HorizontalScrollView),滚动条始终在下方。 不能设置到上方。

 

关联方法:setOverScrollMode(int) API 9

属性说明:滑动到边界时的样式

always OVER_SCROLL_ALWAYS

ifContentScrolls OVER_SCROLL_IF_CONTENT_SCROLLS

never OVER_SCROLL_NEVER

iOS上的bounce功能给人的感觉很爽,当一个可以滚动的区域被拖到边界时,它允许用户将内容拖过界,放手后再弹回来,以一种非常棒的方式提示了用户边界的存在,是IOS的一大特色。android2.3新增了overscroll功能,听名字就知道应该是bounce功能的翻版,但也许是出于专利方面的考虑,google的默认实现跟IOS有所不同,它只是在list拖到边界处时做了一个发光的动画,个人觉得体验比IOS差远了。而且这个黄色的发光在黑色背景下虽然效果不错,在其它背景下可就难说了,因此很多人想要关掉它。

setOverScrollMode(View.OVER_SCROLL_NEVER)

 

androidlaberFor

属性说明:添加标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值