View的基础知识
View不属于Android四大组件,但是它的作用甚至超过了四大组件,当Android系统所提供的基础控件不能满足我们的需求时,我们就需要自定义View来满足我们的需求,这就需要我们对View体系有深入的理解。
为了更好地了解View的内容,我们将介绍:View的位置参数,MotionEvent,TouchSlop对象,VelocityTracker对象,GestureDetector对象和Scroller对象。
1.什么是View
众所周知,Android中有许许多多的基础控件,例如:Button,TextView,RelativeLayout,ListView…它们的基类其实都是View。
View是一种界面层的控件的一种抽象,它代表了一个控件。
除了View,还有ViewGroup,正如其名,它是一个控件组,也就是说它内部包含了许多控件,即一组View。在Android的设计中,ViewGroup也继承于View,这就意味着View既可以是单个控件,也可以是一组控件形成的控件组,这也就形成了View树的结构,其类似于Web前端中的DOM树。
为了更好的理解View的概念,我们用Button和LinearLayout来说明:
Button显然是一个View,LinearLayout不仅是View也是一个ViewGroup,而且其内部可以有很多个View,这些子View同样也可以是一个ViewGroup(即Layout的多层嵌套),依次类推。
2.View的位置参数
View的位置主要由他的四个顶点来决定,分别对应于View的四个属性:
- top:左上角纵坐标
- left:左上角横坐标
- right:右下角横坐标
- bottom:右下角纵坐标
x轴和y轴的分布以及四个属性值的含义,如下图所示:
需要注意的是这些坐标都是相对于View的父容器来说的,因此它是一种相对坐标。
由上图可知:
width = right - left;
height = bottom - top;
这四个参数我们可以通过如下方法得到:
View v = ....//假设v是一个View实例
int top = v.getTop();
int left = v.getLeft();
int right = v.getRight();
int bottom = v.getBottom();
从Android3.0开始,View增加了额外的几个参数:x
, y
, translationX
, translationY
.
其中x,y是View左上角的坐标,而translationX和translationY是View左上角相对于父容器的偏移量。这几个参数View也提供了get/s