在Android应用程序中,使用View和ViewGroup对象来创建用户界面。有很多类型的View和ViewGroup类,它们都是View类的后代。
View对象是Android平台上用户界面的基础单元。View类用于叫做“widgets“子类的基类,它提供了UI对象完全实现,像文本域和按钮。ViewGroup用于叫做“layouts”子类的基类,它提供了不同类型的布局结构,像线性布局、表格布局、相对布局。
一个View对象就是一个数据结构,它的属性保存了屏幕的特定矩形区域的布局参数和内容。View对象会处理它自己的尺寸、布局、描画、焦点变更、滚动和跟驻留在屏幕特定矩形区域交互的键/手势等特性。作为用户界面中的一个对象,一个View也是给用户的一个交互点,并且接受交互的事件。
View的层次结构
在Android平台上,你会像下图显示的那样,使用View和ViewGroup节点的层次结构来定义一个Activity的UI,这个层次结构树能够根据你的需要简化或复杂化,并且你能够使用Android预定义的一组构件和布局来构建UI,或者创建你自己的定制的View。
为了把View层次树展现到屏幕上,你的Activity必须调用setContentView()方法,并且把这个View引用传递给根节点对象。Android系统接受这个引用,并且使用这个引用来废止、计算和绘制新的View层次结构树。层次结构的根节点请求它的子节点依次绘制它们自己。每个ViewGroup节点负责调用它自己的每个子View来绘制它们自己。子节点可以请求它们在父节点中的尺寸和位置,但是父对象能够最终决定每个子节点的大小和位置。Android会依次解析你的布局中的元素(从层次结构树的顶部),实例化View类,并且把它们添加到它们的父容器中。因为这些是依次绘制的,所以如果有位置重叠的元素,那么最后绘制的元素将位于之前在那个位置绘制的对象之上。
布局(Layout)
定义你的布局和表现View层次树的最常见方法是用一个XML布局文件。XML像HTML那样给给布局提供一个可读的结构。XML中每个元素既可以是一个View对象也可以是一个ViewGroup对象(或者是它们的子类)。View对象是层次结构树中的叶子,ViewGroup对象是层次结构树中的分支。
一个XML元素的名字对应了它所代表的Java类的名字,因此一个<TextView>元素要在你的UI中创建一个TextView对象,<linearLayout>元素要创建一个LinearLayout的ViewGroup对象。当你装载布局资源时,Android系统会根据你的布局文件中对应的元素来初始化这些运行时对象。
例如,下例是用文本框和按钮做的一个垂直布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
LinearLayout元素包含了TextView和Button对象。你能够在内部嵌套另一个LinearLayout元素(或其他类型的ViewGroup对象),来拉长View的层次结构树,并创建一个更复杂的布局。
有关更多创建UI布局的信息,请看“XML布局”专题
你能有各种方式来布局你UI界面。使用多种不同类型的ViewGroup对象,你能够用无限多的方法来构建子View和ViewGroup对象。Android提供了一些叫做布局的预定义的ViewGroup对象,包括LinearLayout、RelativeLayout、TableLayout、GridLayout等。每个布局组件都提供一组唯一的用于定义子View位置和布局结构的布局参数。
要学习更多的用于布局的不同类型的ViewGroup对象,请看“常用布局对象”专题
构件(Widgets)
一个Widget是一个用于跟用户交互接口的View对象。Android提供了一组完整的Widget实现,如,按钮、检查框、文本输入域等,因此你能够快速的构建你的UI。Android还提供了一些更复杂的Widget,如日期选择器、时钟、缩放控制等。但是你不能限制Android平台提供的Widget类型。如果你更喜欢做一些定制化的事情,并且要创建你自己的可操作的元素,你可以通过定义你自己的View对象或继承合并既存的Widget来达到自己的目的。
在“定制组件”的开发指南中能够读到更多的内容。
android.widget包列出了Android系统提供的全部widget。
输入事件
一旦你给UI添加了一些View/Widget对象,你就可能想要了解有关用户跟它们的交互,以便能够执行一些动作。要获取用户的输入事件,你需要做以下两件事之一:
1.定义一个事件监听器并且把它注册给View对象。通常,你要关注如何监听事件。View类包含了一组名称是On<something>的监听器嵌套接口,每个都是一个回调方法。例如,View.OnClickListener(针对处理View上的“点击”动作)、View.OntouchListener(针对View内的触屏事件)、View.OnKeyListener(针对View对象内的设备按键事件)。因此如果想要在它被点击时(如一个按钮被选择时)通知View对象,就要实现OnClickListener监听器并定义它的onClick()回调方法(点击按钮时要执行的动作),并且用setOnClickListener()方法把它注册给这个View对象。
2.重写View类的既存的回调方法。在你实现自己的View类,并且想要监听它内部发生的特定的事件时,就要这么做。例如,你能够处理的事件包括:触屏事件(onTouchEvent())、轨迹球移动事件(onTrackballEvent())、或设备的按键事件(onKeyDown())。这样就允许你在这个定制View类内部给每个事件定义默认的行为,并且决定这个事件是否应该传递给其他的子View。当你建立一个定制组件时,这是你给这个View类再次定义这些回调方法的唯一的机会。
菜单(Menus)
应用程序的菜单使用应用程序UI的另一个重要部分。菜单为展示应用程序功能和设置提供了可靠的接口。常见的应用程序菜单是通过按设备上的菜单按钮来展示的。但是,你也能够添加上下文菜单,可以在在用户按下一个项目时来展示。
菜单也使用View层次结构树的结构,但是你不用自己定义这个结构,相反,你要给你的Activity定义onCreateOptionsMenu()或onCreateContextMenu()回调方法,并且要声明你想要包含这个菜单的菜单项。在适合的时机,Android将会自动给菜单创建必要的View层次结构树,并且绘制菜单中每一项。
菜单也处理它们自己的事件,因此没有必要给菜单项注册事件监听器。当菜单项被选择时,框架将会调用onOptionsItemSelected()或onContextItemSelected()方法。
跟应用程序布局一样,有些在XML文件中声明菜单项时使用的选项。
高级主题
一旦你掌握了创建用户界面的基本知识,你就能够研究一些创建更复杂的应用程序界面的高级特性。
适配器(Adapters)
有些时候,你会想封装一个带有一些非硬编码信息的ViewGroup类,因此,你要把你View类跟外部的数据源绑定。你使用一个AdapterView类作为你ViewGroup,并且每个子View都用Adapter中的数据来初始化和填充。
AdapterView对象是ViewGroup类的一个实现,它基于给定的适配器对象来决定它的子View对象。适配器在数据源(也可能是一个外部字符串的数组)和AdapterView(用于显示数据)之间扮演着一个邮递员的角色,对于特定的任务,Adapter类有几个实现,如针对从Cursor对象中读取数据库数据的CursorAdapter类,或者是针对读取数组数据的ArrayAdapter类。
样式和主题(Styles and Themes)
也许你对标准的Widget外观不满意,你能够创建一些你自己的样式和主题来修改它们。
1.样式是一组格式属性,你能够在你布局中把它们作为一个单元应用于独立的元素。如,你能够定义一个指定某个文本大小和颜色的样式,然后把它只应用到指定的View元素。
2.主题也是一组格式属性,但是,你能够把它们作为一个单元应用于应用中的所有Activity,或者只是一个单独的Activity。如,你能给窗口框架和面板背景定义一个设置指定颜色的主题,并且还要设置文本尺寸和菜单颜色。然后这个主题能够应用与指定的Activity或整个应用程序。
样式和主题是资源。Android提供了一些你能够使用的样式和主题,或者你也能够声明你自己定制的样式和主题资源。
在“样式和主题”的专题中会介绍更多的样式和主题的使用方法。
分享到:
相关推荐
《Android User Interface Development for Beginners》是一本专为初学者设计的Android界面开发指南,由外籍作者撰写,旨在帮助读者深入理解并掌握构建Android用户界面的关键技术。这本书详细讲解了如何利用Android ...
The Android User Interface Development Beginner's Guide will tell you everything you need to know to style your applications from bottom up. Given the importance of user-interface design on a touch-...
Android User Interface Design details each step of the design and development process and contains extensive downloadable sample code, including complete finished apps. Learn how Android has evolved ...
《Microsoft Windows CE User Interface Services Guide用户界面服务指南-part2》是针对使用Embedded Visual C++(EVC)开发Windows CE平台上用户界面的专业参考资料。本部分主要深入探讨了如何利用EVC进行用户界面...
- **定义**:Android用户界面(User Interface, UI)是指在Android设备上显示给用户的图形界面,包括各种控件、布局以及交互方式等。 - **目的**:提供一种直观、友好的方式让用户与应用程序进行交互。 - **关键组件**...
在Android平台上,用户界面(User Interface,UI)的设计与实现是开发者关注的重要方面。这篇教程“Android User Interface”旨在帮助初级学者理解如何在Android环境中创建和优化用户界面,特别是结合Qt进行跨平台...
### Android用户界面开发初学者指南知识点解析 #### 一、书籍基本信息 - **书名**:《Android 用户界面开发初学者指南》 - **作者**:Jason Morris - **出版日期**:2011年2月 - **出版社**:Packt Publishing - *...
1. 安卓用户界面开发(Android User Interface Development):安卓用户界面开发是安卓应用开发的一个重要组成部分,专注于创建和优化用户与应用交互的界面和体验。这包括设计、布局、交互逻辑和视觉元素的实现。...
总的来说,"android user interface development.doc"这份文档很可能涵盖了以上提到的所有内容,详细讲解了如何在Android平台上创建出色且易于使用的用户界面。无论你是初学者还是经验丰富的开发者,这份资料都能...
Android User Interface Design Implementing Material Design for Developers(2nd) 英文epub 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
Android User Interface Design Implementing Material Design for Developers(2nd) 英文mobi 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
在当今移动设备高度普及的时代,良好的用户界面(User Interface, UI)设计对于提升用户体验至关重要。特别是在Android平台上,开发者需要掌握一系列技术和原则来构建美观且实用的应用程序界面。本文将详细介绍Android...
SAP用户界面技术路线图(SAP User Interface Road Map 2015.11)是一份由SAP公司发布的文件,主要阐述了该公司对用户界面技术的未来发展计划和规划。在这份文件中,SAP为用户提供了关于其产品演进和技术发展的路线图...
标题中的“Android User Interface Development Beginner”意指本书为初学者入门Android用户界面开发所编写。Android是Google开发的一个基于Linux内核的开源操作系统,广泛用于智能手机和平板电脑等移动设备。用户...
1. Android用户界面设计: 本书专注于Android平台的用户界面设计,特别是Material Design(材质设计)的实现方法,这是一套由Google设计和推广的设计语言,旨在为用户提供更直观、更丰富的交互体验。 2. 开发者视角:...
提供简单,合理的规则,无需任何艺术才能即可应用,以改善从传统GUI应用程序到网站再到消费电子产品的任何用户界面。
《程序员的用户界面设计》(User Interface Design for Programmers)一书由乔尔·斯波斯基(Joel Spolsky)撰写,旨在为程序员提供一套简单而实用的规则,用以改进用户界面设计,无论是在传统的图形用户界面(GUI)...
The Android User Interface Development Beginner's Guide will tell you everything you need to know to style your applications from bottom up. Given the importance of user-interface design on a touch-...
在Android开发中,用户界面UI(User Interface)是与用户交互的关键部分,它决定了应用程序的外观和用户体验。本文将深入探讨Android UI的构建,包括布局(Layouts)、LayoutParams及其相关概念。 首先,Android...
[Wrox] SharePoint 2013 Branding and User Interface Design (英文版) [Wrox] SharePoint 2013 Branding and User Interface Design (E-Book) ☆ 图书概要:☆ If you are planning, designing, and launching ...