当前位置: 移动互联网学院 > Android开发 > Android界面开发教程,入门必看
Android界面开发教程,入门必看 时间:2017-03-31     来源:Android开发学习网

今天为大家带来的是Android界面开发教程,好的Android界面设计能够提升用户体验,但是如果因此影响了系统性能反倒会降低用户体验,所以了解Android界面开发的工作原理很有必要。

Android界面开发教程,入门必看
Android界面开发教程,入门必看

Android界面开发教程之用户界面开发基础

用户界面(User Interface,UI)是系统和用户之间进行信息交换的媒介,实现信息的内部形式与用户可以接收形式之间的转换。

在Android系统中,Android自带有许多要求,预示着其用户界面的复杂性:它是一个支持多个并发应用程序的多处理系统,接受多种形式的输入,有着高交互性,必须具有足够的灵活性,以支持现在和未来广泛的设备。令人印象深刻的是丰富的用户界面及其易用性,实现了所有给定的功能。但为了使用应用程序在不同的设备上正常的显示以及运行,避免对系统性能造成过大的负担,应该明白其工作原理。

Android使用XML文件描述用户界面;资源文件独立保存在资源文件夹中;对用户界面描述非常灵活,允许不明确定义界面元素的位置和尺寸,仅声明界面元素的相对位置和粗略尺寸。以下就来介绍一下Android的用户界面框架。

Android是在Java环境中增加了一个图形用户界面(GUI)工具包,联合了AWT,Swing,SWT,和J2ME(撇开Web UI的工具包)。Android框架和他们一样,它是单线程的,事件驱动的,并建立一个嵌套的组件库。

Android用户界面框架(Android UI Framework),像其他的UI框架一样,采用了MVC(Model-View-Controller)模型,提供了处理用户输入的控制器(Controller),显示用户界面和图像的视图(View),以及保存数据和代码的模型(Model)。

Android界面开发:Android用户界面框架MVC模型
图-1 Android用户界面框架MVC模型

其中Model是应用程序的核心。虽然特定应用程序的视图(View)和控制器(Controller)必然反映他们操纵的Model,但一个Model可能是由几个不同的应用使用。想想看,例如,一个MP3播放器的应用程序以及一个将MP3文件转换成WAV MP3文件的程序,对于这两个应用程序,Model包括它的MP3文件格式和编解码器。然而,前者的应用程序,有熟悉的停止,启动和暂停控制等操作。后者可能不会产生任何声音;相反,它会设置比特率的控制等。此时,他们的Model都是对所有的文件数据。

其中的控制器(Controller)能够接收并响应程序的外部动作,如按键动作或触摸屏动作等。控制器使用队列处理外部动作,每个外部动作作为一个对应的事件被加入队列中,然后Android用户界面框架按照“先进先出”的规则从队列中获取事件,并将这个事件分配给所对应的事件处理方法。例如,当用户按下他的手机上的键,Android系统生成的KeyEvent,并将其添加到事件队列中。后,在之前已排队的事件被处理后,KeyEvent是从队列中删除的,并作为当前选择View的dispatchKeyEvent方法的调用参数传递。一旦事件被分派到的焦点组件,该组件可能会采取适当的行动来改变程序的内部状态。例如,在MP3播放器应用程序中,当用户点击屏幕上的播放/暂停按钮时,触发该按钮的事件,处理方法可能更新Model,恢复播放一些先前所选乐曲。

视图(View)是应用程序给用户的反馈。它负责应用程序的部分渲染显示,发送音频扬声器,产生触觉反馈等。视图部分应用视图树(View Tree)模型。视图树是由Android用户界面框架中的界面元素以一种树形结构组织在一起的,Android系统会依据视图树的结构从上至下绘制每一个界面元素。每个元素负责对自身的绘制,如果元素包含子元素,该元素会通知其下所有子元素进行绘制。

下面就来详细介绍一下视图树。Android 当中的可视化界面单元,可分为“容器”与“非容器”两类,容器类继承ViewGroup,非容器类则从 View 衍生出来,如图-2所示。

Android界面开发图-2 Android视图树(View Tree)
图-2 Android视图树(View Tree)

视图树由View和ViewGroup构成。其中,View是界面的基本的可视单元,存储了屏幕上特定矩形区域内所显示内容的数据结构,并能够实现所占据区域的界面绘制、焦点变化、用户输入和界面事件处理等功能。同时View也是一个重要的基类,所有在界面上的可见元素都是View的子类。ViewGroup是一种能够承载含多个View的显示单元,它承载了界面布局,同时还承载了具有原子特性的重构模块。

如图-3所示,这些 Layout 可以套叠式地组成一棵视图树。其中,父节点的 Layout 与子节点的 LayoutParams之间有控制关系,例如,若父节点是RelativeLayout,则子节点的单元中可以指定RelativeLayout.LayoutParams 中的属性,以控制子节点在父节点中的排列状况。

Android界面开发:图-3 ViewGroup树形层次结构
图-3 ViewGroup树形层次结构

在单线程用户界面中,控制器从队列中获取事件和视图在屏幕上绘制用户界面,使用的都是同一个线程。这样的单线程用户界面使得处理方法具有顺序性,能够降低应用程序的复杂程度,同时也能降低开发的难度。

注:单线程用户界面存在缺点是:如果事件处理方法过于复杂,可能会导致用户界面失去响应。
 

Android界面开发教程之界面布局概述

界面布局(Layout)是用户界面结构的描述,定义了界面中所有的元素、结构和相互关系。

界面布局(Layout)是为了适应多种Android设备上的屏幕而设计的解决方案:它们可以有不同的像素密度、尺寸和不同的纵横比。典型的Android设备,如HTC G1手机,甚至允许应用程序运行时改变屏幕的方向(纵向或横向),因此布局的基础设施需要能够应对这种情况。布局的目的是为开发人员提供一种方式来表示View之间的物理关系,因为它们是在屏幕上绘制。作为Android的界面布局,它使用开发需求来满足与开发要求接近的屏幕布局。

Android开发者使用术语“布局”,指的是两种含意中的一种,布局的两种定义如下:

·一种资源,它定义了在屏幕上画什么。布局资源存储在应用程序的/res/layout资源目录下的XML文件中。布局资源简单地说就是一个用于用户界面屏幕,或屏幕的一部分,以及内容的模板;

·一种视图类,它主要是组织其他控件。这些布局类(LinearLayout,RelativeLayout,TableLayout等)用于在屏幕上显示子控件,如文本控件、按钮或图片。

Eclipse的Android开发插件包含了一个很方便的用于设计和预览布局资源的布局资源设计器。这个工具包括两个标签视图:布局视图允许你预览在不同的屏幕下及对于每一个方向控件会如何展现;XML视图告诉你资源的XML定义。

这里有一些关于在Eclipse中使用布局资源编辑器的技巧:

·使用概要(Outline)窗格在你的布局资源中添加和删除控件;

·选择特定的控件(在预览或概要窗口)并使用属性窗格来调整特定控件的属性;

·使用XML标签来直接编辑XML定义。

很重要的是要记住一点,Eclipse布局资源编辑器不能完全精确的模拟出布局在终用户设备上的呈现形式。对此,必须在适当配置的模拟器中测试,更重要的是在目标设备上测试。而且一些“复杂”控件,包括标签或视频查看器,也不能在Eclipse中预览。

声明Android程序的界面布局有两种方法:

·使用XML文件描述界面布局;

·在程序运行时动态添加或修改界面布局。

用户既可以独立使用任何一种声明界面布局的方式,也可以同时使用两种方式。

使用XML文件声明界面布局有以下3个特点:将程序的表现层和控制层分离;在后期修改用户界面时,无须更改程序的源代码;用户还能够通过可视化工具直接看到所设计的用户界面,有利于加快界面设计的过程,并且为界面设计与开发带来极大的便利性。

设计程序用户界面方便且可维护的方式是创建XML布局资源。这个方法极大地简化了UI设计过程,将许多用户界面控件的布局,以及控件属性定义移到XML中,代替了写代码。它适应了UI设计师(更关心布局)和开发者(了解Java和实现应用程序功能)潜在的区别。开发者依然可以在必要时动态地改变屏幕内容。复杂控件,像ListView或GridView,通常用程序动态地处理数据。

XML布局资源必须存放在项目目录的/res/layout下。对于每一屏(与某个活动紧密关联)都创建一个XML布局资源是一个通用的做法,但这并不是必需的。理论上来说,可以创建一个XML布局资源并在不同的活动中使用它,为屏幕提供不同的数据。如果需要的话,也可以分散布局资源并用另外一个文件包含它们。

界面开发是Android开发中比较重要的一部分,直接影响了开发的Android APP的受欢迎程度,以上就是今天为大家分享的Android界面开发教程,如果您有关于Android界面开发培训的问题,请联系我们的在线客服。