View(用户界面)-Android_Basic002

一、什么是View

Activity是Android程序的显示层,每一个显示窗口都是一个Activity;可是Activity本身无法显示在屏幕上,我们可以把它理解成是一个抽象层,一个壳子;就譬如一个JSP页面,它本身并没有显示出来任何东西,负责显示的是他生成的HTML标签。那么Android里谁才是真正显示出来的部分?--是View和ViewGroup,而ViewGroup其实也是View的子类。

有了上述的概念,我们现在可以讲明白一个Activity中的显示元素是如何显示出来的了。首先UI组件是按层次结构来由外到内的方式逐步展示的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。当Activity被激活并且获得焦点时,系统会通知activity并且请求根节点去计算并绘制树,根节点就会请求它的子节点去绘制它们自己。每个树上的ViewGroup节点会负责绘制它的子节点。ViewGroup会计算它的有效空间,布局所有的子显示对象,并最终调用所有的子显示对象的Draw()方法来绘制显示对象。各个子显示对象可以向父对象请求它们在布局中的大小和位置,但最终决定各个子显示对象的大小和位置的是父对象。

二、常用Layout介绍

ViewGroup是个特殊的View,它继承于Android.view.View。它的功能就是装载和管理下一层的View对象或ViewGroup对象,也就说他是一个容纳其它元素的的容器。ViewGroup是布局管理器(layout)及view容器的基类。ViewGroup中,还定义了一个嵌套类ViewGroup.LayoutParams。这个类定义了一个显示对象的位置、大小等属性,view通过LayoutParams中的这些属性值来告诉父级,它们将如何放置。

ViewGroup是一个抽象类,所以真正充当容器的是他的子类们。帧布局FrameLayout,线性布局LinearLayout,绝对布局AbsoluteLayout,相对布局RelativeLayout,表格布局TableLayout等为几个常用布局。

RelativeLayout用到的一些重要的属性:

第一类:属性值为true或false

android:layout_centerHrizontal水平居中

android:layout_centerVertical垂直居中

android:layout_centerInparent相对于父元素完全居中

android:layout_alignParentBottom贴紧父元素的下边缘

android:layout_alignParentLeft贴紧父元素的左边缘

android:layout_alignParentRight贴紧父元素的右边缘

android:layout_alignParentTop贴紧父元素的上边缘

android:layout_alignWithParentIfMissing如果对应的兄弟元素找不到的话就以父元素做参照物

第二类:属性值必须为id的引用名“@id/id-name”

android:layout_below在某元素的下方

android:layout_above在某元素的的上方

android:layout_toLeftOf在某元素的左边

android:layout_toRightOf在某元素的右边

android:layout_alignTop本元素的上边缘和某元素的的上边缘对齐

android:layout_alignLeft本元素的左边缘和某元素的的左边缘对齐

android:layout_alignBottom本元素的下边缘和某元素的的下边缘对齐

android:layout_alignRight本元素的右边缘和某元素的的右边缘对齐

第三类:属性值为具体的像素值,如30dip,40px

android:layout_marginBottom离某元素底边缘的距离

android:layout_marginLeft离某元素左边缘的距离

android:layout_marginRight离某元素右边缘的距离

android:layout_marginTop离某元素上边缘的距离

相关推荐