`
oxen
  • 浏览: 106753 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Android屏幕元素层次结构

阅读更多
         对于一个Android手机应用来说,一个好看而又简洁的界面,是相当重要的,既能提高使用者的体验,又保证应用的高效执行。而Android SDK已经为我们提供了一套完善的界面设计功能,有丰富的组件供我们使用,如果还不能满足我们的界面需求,我们还可以对它们进行扩展。为了达到这样的目标,我们就要对Android SDK中提供的界面生成技术进行全面深入的学习,做到应用自如。
本文参考Android提供的相关文档,只对Android的屏幕元素的层次结构做一个小结,从总体上对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)方法。
类别 方法 描述
Creation Constructors
onFinishInflate() 当View和它的所有子对象从XML中导入之后,调用此方法
Layout onMeasure(int, int) View会调用此方法,来确认自己及所有子对象的大小
onLayout(boolean, int, int, int, int, int, int) 当View要为所有子对象分配大小和位置时,调用此方法
onSizeChanged(int, int, int, int) 当View大小改变时,调用此方法
Drawing onDraw(Canvas) 当View要绘制它的内容时,调用此方法
Event processing onKeyDown(int, KeyEvent) 当一个新的按键事件发生时,调用此方法
onKeyUp(int, KeyEvent) 当一个按键释放事件发生时,调用此方法
onMotionEvent(MotionEvent) 当一个动作事件(如触摸)发生时,调用此方法
Focus onFocusChanged(boolean, int) 当View获得或失去焦点时,调用此方法
Attaching onAttachedToWindow() 当View附加到一个窗体上时,调用此方法
onDetachedFromWindow() 当View离开它的窗体时,调用此方法
         以上的事件是Android自动会处理的,而对于其它一些重要的事件,如鼠标点击等,却必须要我们自己手动添加到view中,这点比较郁闷,具体的添加方法如下:
public class SendResult extends Activity
{
protected void onCreate(Bundle savedValues)
{
...

Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(mCorkyListener);
}

private OnClickListener mCorkyListener = new OnClickListener()
{
public void onClick(View v)
{
setResult(RESULT_OK, "Corky!");
finish();
}
};

屏幕元素层次结构


        对于Android应用中的一个屏幕,它的屏幕元素是按层次结构来描述的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。当Activity被激活并且获得焦点时,系统会通知activity并且 请求根节点去计算并绘制树,根节点就会请求它的子节点去绘制它们自己。
        每个树上的ViewGroup节点会负责绘制它的子节点。ViewGroup会计算它的有效空间,布局所有的子显示对象,并最终调用所有的子显示对象的Draw()方法来绘制显示对象。各个子显示对象可以向父对象请求它们在布局中的大小和位置,但最终决定各个子显示对象的大小和位置的是父对象。
分享到:
评论

相关推荐

    Android屏幕元素介绍

    ### Android屏幕元素详细介绍 #### 一、屏幕元素 在Android应用程序开发中,屏幕元素是构成用户界面的基础。本文将详细介绍Android平台上的基本屏幕元素及其作用。 ##### 1.1 android.app.Activity `android.app...

    Adroid编程入门

    - Android屏幕元素层次结构清晰,包括屏幕、视图和布局等。 - 用户界面元素与Swing UI元素存在不同,开发者需要重新熟悉Android特有的UI组件。 - AndroidManifest.xml文件是Android应用程序的配置文件,用于声明...

    Android开发教程之屏幕元素相关概念详解--千锋培训

    在Android开发中,屏幕元素是构建用户界面的基本组件,它们决定了应用程序的外观和交互方式...理解这些基本概念是成为一名合格的Android开发者的关键步骤,希望本教程能帮助你更深入地了解Android屏幕元素的相关知识。

    Android studio界面设计与资源PPT

    (1)理解Android屏幕元素的层次结构、View与ViewGroup (2)熟悉Android的布局对象和Android中创建UI界面的方式 (3)熟悉Android常用的UI控件及其基本属性 (4)熟悉Android尺寸的单位 (5)掌握TextView、...

    Android应用开发 目录结构

    Android应用的结构分为多个层次,从上到下包括应用程序、应用程序框架、各种库和Android的运行时环境以及操作系统层。 1. **应用程序**:这部分是由Java语言编写的,主要负责用户界面的交互设计。Activity是应用...

    Android入门到精通

    7.1 Android中控件的层次结构 7.2 基本控件的使用 7.3 自定义的视图 第8章 视图组(ViewGroup)和布局(Layout)的使用 8.1 Android的屏幕元素体系 8.2 几种独立使用的视图组 8.3 作为简单容器使用的视图组 8.4 布局...

    android从入门到精通详解

    视图组(如ViewGroup和Layout)是Android屏幕元素体系的基础,用来管理控件的布局和组织,开发者需要掌握如何使用各种布局和视图组来创建复杂的用户界面。 知识点8:2D图形接口 在Android中,可以通过2D图形接口...

    Android应用源码之11.AbsoluteLayout&FrameLayout.zip

    学习这两个布局的源码,开发者可以深入理解Android UI渲染的底层机制,包括如何解析XML布局文件,如何计算和布置子视图的位置,以及如何处理视图层次结构。这对于优化性能,尤其是处理大量子视图时的性能,至关重要...

    android 树形结构实现

    在Android开发中,树形结构是一种常见的数据呈现方式,它能有效地组织和展示层次化信息。例如,在文件系统、组织架构、菜单系统等场景中,我们经常需要将数据以树状的形式展示出来,使得用户可以方便地浏览和操作。...

    uiautomatorviewer 定位元素 Android 8-10

    一旦连接成功,它将显示设备上的UI组件层次结构。每个节点代表一个UI元素,包括按钮、文本框、图像等。点击节点,右侧的详细信息面板会显示对应的属性,如包名、类名、资源ID等。 在描述中提到的博客地址...

    android界面布局详解

    视图层次结构就像一棵树,根节点通常是一个布局(ViewGroup),其余节点是各种View对象。当Activity启动时,需通过`setContentView()`方法设置布局根节点,Android系统会根据此树来测量、布局和绘制界面。 2、...

    android TreeView整理版

    在Android开发中,TreeView是一种可用来展示层次结构数据的视图组件,类似于常见的文件系统目录结构。虽然Android SDK并未直接提供TreeView,但开发者通常通过自定义控件或者使用第三方库来实现这一功能。本整理版将...

    安卓Android源码——水果忍者点击屏幕效果.zip

    2. `.xml` 文件:布局文件,定义了游戏界面的结构和元素。 3. 图片资源文件:如`.png`或`.jpg`,用于游戏中的水果和其他视觉元素。 4. `AndroidManifest.xml`:声明应用的组件、权限和其他元数据。 5. `build.gradle...

    Android项目源码史上最适合新手的记事本

    此外,Android应用的UI通常由XML布局文件定义,这些文件描述了界面元素的层次结构和属性。在`activity_main.xml`中,可能包含EditText用于输入笔记,ListView或RecyclerView用于显示笔记列表。开发者会用到适配器...

    android布局_Android布局_android_

    在Android开发中,布局(Layout)是构建用户界面的基础元素,它定义了屏幕上各个组件的排列方式和相互关系。本文将深入探讨Android布局的各种类型及其使用方法,旨在帮助开发者更好地理解和掌握Android应用的UI设计...

    Android入门到精通详解(完整书签)

    - **Android的屏幕元素体系**:讲述了Android中用于构建用户界面的主要元素。 - **几种独立使用的视图组**:列举了几种常见的独立使用的视图组,如LinearLayout、RelativeLayout等。 - **作为简单容器使用的视图组**...

    Android-一款示例AndroidApp展示了在真实App中的Android材质设计(materialdesign)

    它强调清晰的层次结构、有意义的过渡和响应式的交互。在"plaid-master"项目中,开发者可能展示了这些基础概念,例如使用浮动操作按钮(FAB)、底部导航栏、抽屉式导航和卡片视图等。 2. 颜色系统:材质设计引入了丰富...

    Android应用源码之仿安卓美团界面.zip

    源码中可能会使用到Android的布局组件,如LinearLayout、RelativeLayout、ConstraintLayout等,来构建各种屏幕元素的层次结构。此外,可能还会使用自定义View或自定义Adapter来实现特定功能或视觉效果。 2. **...

    Android andbook 中文版(未翻译完成)

    - **屏幕元素层次**: Android应用程序的用户界面通常由多个视图(Views)组成,这些视图按照一定的层次结构组织起来。 - **UI元素与Swing的对比**: Android UI元素与Swing元素有一些相似之处,但也存在很多差异,特别...

    Android分类列表菜单

    ExpandableListView允许创建可展开和折叠的组,每组下可以包含多个子项,这非常适合构建层次结构的菜单。而RecyclerView,虽然默认不支持分组,但通过自定义适配器和布局管理器,也能实现类似的功能,并且性能更优。...

Global site tag (gtag.js) - Google Analytics