Android屏幕元素层次结构

转自:http://blog.csdn.net/hpoi/article/details/4629717android

 

Android屏幕元素层次结构app

android.app.Activity
对于一个Android应用来讲,android.app.Activity类实例是一个最基本的功能单元。一个Activity实例能够作不少的事情,可是它自己没法显示在屏幕上,而是借助于Viewgroup和View,这两个才是Android平台上最基本的两个用户界面表达单元。布局


android.view.ViewGroup.net


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


在这里,继承于ViewGroup的一些主要的布局类以下:
一、FrameLayout:最简单的一个布局对象。它里面只显示一个显示对象。全部的显示对象都将会固定在屏幕的左上角,不能指定位置。但容许有多个显 示对象,但后一个将会直接在前 一个之上进行覆盖显示,把前一个部份或所有挡住(除非后一个是透明的)。
二、LinearLayout:以单一方向对其中的显示对象进行排列显示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,它还能够对个别的显示对象设置显示比例。
三、TableLayout:以拥有任意行列的表格对显示对象进行布局,每一个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。
四、AbsoluteLayout:容许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0, 0),向下及向右,坐标值变大。这种布局管理器因为显示对象的位置定死了,因此在不一样的设备上,有可能会出现最终的显示效果不一致。
五、RelativeLayout:容许经过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。如一个按钮能够放于另外一个按钮的右边,或者能够放在布局管理器的中央。
在Android中,提供了不少的布局管理器,这里也不一一列举,开发者能够根据实际须要,选择合适的布局管理器。

android.view.View

View是全部view类的基类,一个view一般占用屏幕上的一个矩形区域,并负责绘图及事件处理。View是全部窗体部件的基类,是为窗体部件服务的,这里的窗体部件即UI控件,如一个按钮或文本框。Android已经为咱们提供了一系列的标准UI控件供咱们直接使用,同时,咱们也能够经过继承于 View类或View的子类,来实现咱们自定义的UI控件。
要定制咱们本身的UI控件,须要重载View类中的一些方法,如下表格列出View提供出来的,供重载的方法,这些方法没必要都要重载,但至少要实现onDraw(android.graphics.Canvas)方法。blog

 

image

 

当你为一个 activty 添加一个可见的 view, 而且运行这个activty时,android一般状况下会自动按照下列顺序来触发view的相关事件继承

onAttachedToWindow
onMeasure
onSizeChanged
onLayout
onDraw  事件

 

对于Android应用中的一个屏幕,它的屏幕元素是按层次结构来描述的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的 setContentView()方法而且传入这个层次树的根节点引用。当Activity被激活而且得到焦点时,系统会通知activity而且请求根节点去计算并绘制树,根节点就会请求它的子节点去绘制它们本身。开发


每一个树上的ViewGroup节点会负责绘制它的子节点。ViewGroup会计算它的有效空间,布局全部的子显示对象,并最终调用全部的子显示对象的 Draw()方法来绘制显示对象。各个子显示对象能够向父对象请求它们在布局中的大小和位置,但最终决定各个子显示对象的大小和位置的是父对象。get

相关文章
相关标签/搜索