Android屏幕元素层次结构

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

Android屏幕元素层次结构

android.app.Activity

对于一个Android应用来说,android.app.Activity类实例是一个最基本的功能单元。一个Activity实例可以做很多的事情,但是它本身无法显示在屏幕上,而是借助于Viewgroup和View,这两个才是Android平台上最基本的两个用户界面表达单元。

android.view.ViewGroup

ViewGroup是一个特殊的View类,它继承于android.view.View。它的功能就是装载和管理下一层的View对象和ViewGroup对象。ViewGroup是布局管理器(layout)及view容器的基类。

ViewGroup中,还定义了一个嵌套类ViewGroup.LayoutParams。这个类定义了一个显示对象的位置、大小等属性,view通过LayoutParams中的这些属性值来告诉父级,它们将如何放置。

在这里,继承于ViewGroup的一些主要的布局类如下:

1、FrameLayout:最简单的一个布局对象。它里面只显示一个显示对象。所有的显示对象都将会固定在屏幕的左上角,不能指定位置。但允许有多个显
示对象,但后一个将会直接在前 一个之上进行覆盖显示,把前一个部份或全部挡住(除非后一个是透明的)。

2、LinearLayout:以单一方向对其中的显示对象进行排列显示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,它还可以对个别的显示对象设置显示比例。

3、TableLayout:以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。

4、AbsoluteLayout:允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0,
0),向下及向右,坐标值变大。这种布局管理器由于显示对象的位置定死了,所以在不同的设备上,有可能会出现最终的显示效果不一致。

5、RelativeLayout:允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。如一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。

在Android中,提供了很多的布局管理器,这里也不一一列举,开发者可以根据实际需要,选择合适的布局管理器。


android.view.View

View是所有view类的基类,一个view通常占用屏幕上的一个矩形区域,并负责绘图及事件处理。View是所有窗体部件的基类,是为窗体部件服务的,这里的窗体部件即UI控件,如一个按钮或文本框。Android已经为我们提供了一系列的标准UI控件供我们直接使用,同时,我们也可以通过继承于
View类或View的子类,来实现我们自定义的UI控件。

要定制我们自己的UI控件,需要重载View类中的一些方法,以下表格列出View提供出来的,供重载的方法,这些方法不必都要重载,但至少要实现onDraw(android.graphics.Canvas)方法。

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

onAttachedToWindow
onMeasure
onSizeChanged
onLayout

onDraw

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

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

时间: 2024-10-17 04:52:42

Android屏幕元素层次结构的相关文章

Android自学历程—屏幕元素层次结构(View,ViewGroup)

这几天学习,经常看见View,ViewGroup,还有什么LayoutInflater,遂回头看看当初学的东西. 屏幕元素层次结构 android应用程序基本的功能单位是 Activity-android.app.Activity ,一个activity可以许多的事情,但是它自身不存在于屏幕上.为了让你的activity有屏幕显示并且能设计她的UI,你与要用到 Views and Viewgroups -android平台上 用户界面表达 的 基本单位. Views 一个View是基类 andr

android屏幕适配详解

android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如果是纯色背景,尽量使用android的shape 自定义. 5.如果需要在特定分辨率下适配,可以在res目录上新建layout

Android屏幕适配原理

大纲 1.android中res目录下的文件夹所对应屏幕尺寸 2.用dp表示尺寸的原理 3.对于720p尺寸的适配需要注意什么 4.ui切图按什么尺寸给最好 参考:http://www.360doc.com/content/12/0301/17/5087210_190881395.shtml 几个概念: 1) 屏幕密度(dpi) :dot per inch,即每英寸像素数. ldpi(120),mdpi(160),hdpi(240),xhdpi(320) 计算方法: 以480x854,4.0in

android屏幕分类与屏幕相关参数定义

android设备运行在各种不同的屏幕中,这些屏幕有着不同的screen sizes(屏幕大小)和screen densities(屏幕密度).screen sizes表示屏幕的实际物理大小,比如5寸手机,7寸平板,8寸平板.而screen densities表示屏幕的像素密度,比如同样5寸的手机,有720p的,有1080p的.screen sizes和screen densities从两个维度表示了屏幕的属性,他们互不影响. Screen Sizes 屏幕的真实物理尺寸,以屏幕的对角线测量,一

Android开发:最全面、最易懂的Android屏幕适配解决方案

前言 Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 鸿洋:Android 屏幕适配方案 凯子:Android屏幕适配全攻略(最权威的官方适配指导) 自身的思考&实践 给你带来一种全新.全面而逻辑清晰的Android屏幕适配思路,只要你认真阅读,保证你能解决Android的屏幕适配问题! 目录 定义 使得某一元素在Androi

android 屏幕适配问题

转自http://blog.sina.com.cn/s/blog_74c22b210100tn3o.html 如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情. 首先:你需要在AndroidManifest.xml文件的<manifest>元素如下添加子元素 <supports-screens android:largeScreens="true" android:normalScreens=

Android屏幕适配攻略

Android适配攻略 一.屏幕适配的必要性 为什么Android需要适配? 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,修改成他们想要的样子. 但是这种"碎片化"到底到达什么程度呢? 在2012年,OpenSignalMaps(以下简称OSM)发布了第一份Android碎片化报告,统计数据表明, 2012年,支持Android的设备共有3997种. 2013年,支持Android的设备共有11868种. 2014年,支持Andr

Android 屏幕适配:最全面的解决方案

转自:https://www.jianshu.com/p/ec5a1a30694b 前言 Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 鸿洋:Android 屏幕适配方案 凯子:Android屏幕适配全攻略(最权威的官方适配指导) 自身的思考&实践 给你带来一种全新.全面而逻辑清晰的Android屏幕适配思路,只要你认真阅读

Android屏幕适配

1.基本概念 屏幕大小(screen size) —— 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).android把屏幕分为以下4种:small,normal,large,extra large 屏幕密度(Screen Density) ——  一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点).相比起medium.high屏幕密度的设备,在一块确定大小的屏幕区域l密度为low的屏幕拥有的像素更少.android把屏幕密度分为4种:low,medium,h