Android用户界面设计:线性布局

Android用户界面设计:线性布局
Android用户界面设计:线性布局

Android 用户界面设计:线性布局

出处:西西整理作者:RockUX–WEB前端人气:57次评论: 0 | 我要发表看法

理解布局对于良好的Android程序设计来说很重要。在这个教程中,你将学习到所有关于线性布局的东西,它在屏幕上垂直地或水平地组织用户界面控件或者小工具。使用得当,线性布局可以作为基本的布局,基于这个布局来可以设计出许多有趣的Android程序用户界面。什么是线性布局

线性布局是最简单,Android开发者使用得最多的布局类型之一,开发者用它来组织你们的用户界面上的控件。线性布局的作用就像它的名字一样:它将控件组织在一个垂直或水平的形式。当布局方向设置为垂直时,它里面的所有子控件被组织在同一列中;当布局方向设置为水平时,所有子控件被组织在一行中。

线性布局可以在XML布局资源文件中定义,也可以用Java代码在程序中动态的定义。

下图展示了一个包含7个T extView控件的线性布局。这个线性布局方向被设置为垂直,导致每个T extView控件被显示在一列当中。每一个TextView控件的文本属性都是一个颜色值,背景色就是这个颜色;通过将控件的layout_width属性设置为fill_parent,每个控件都拉伸到屏幕宽度。

用XML布局资源定义线性布局

设计程序用户界面最方便和可维护的方法是创建XML布局资源。这个方法极大地简化了UI 设计过程,它将很多静态创建和用户界面控件的布局以及控件属性的定义移到了XML中,而不是写代码。

XML布局资源必须被存储在项目目录的/res/layout下。让我们看看前一节介绍的彩虹线性布局。这个屏幕基本上就是一个设置为铺满整个屏幕的垂直线性布局,这通过设置它的layout_width和layout_height属性为fill_parent来实现。适当地将其命名为/res/layout/rainbow.xml,XML定义如下:

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical">

android:layout_height="wrap_content" android:background="#f00"

android:layout_width="fill_parent" android:layout_weight=".14"

android:gravity="center" android:textColor="#000">

android:layout_height="wrap_content" android:layout_width="fill_parent"

android:layout_weight=".15" android:background="#ffa500"

android:gravity="center" android:textColor="#000">

android:layout_height="wrap_content" android:layout_width="fill_parent"

android:layout_weight=".14" android:background="#ffff00"

android:gravity="center" android:textColor="#000">

android:layout_height="wrap_content" android:layout_width="fill_parent"

android:layout_weight=".15" android:background="#0f0" android:gravity="center" android:textColor="#000">

android:layout_height="wrap_content" android:layout_width="fill_parent"

android:layout_weight=".14" android:background="#00f" android:gravity="center" android:textColor="#fff">

android:layout_height="wrap_content" android:layout_width="fill_parent"

android:layout_weight=".14" android:background="#4b0082"

android:gravity="center" android:textColor="#fff">

android:layout_height="wrap_content" android:layout_width="fill_parent"

android:layout_weight=".14" android:background="#ee82ee"

android:gravity="center" android:textColor="#000">

可能你会注意到这个线性布局的每一个子控件都有很多有趣的属性,包括一个叫做layout_weight的属性。一会我们会讲到更多关于它的内容。

下面两张图片展示了这个布局在设备的竖屏和横屏模式下的样子:

回忆一下,在Activity中,只需要一行有onCreate()方法的代码来在屏幕上加载和显示一个布局资源。如果这个布局资源被存储在/res/layout/rainbow.xml文件中,这行代码应该是:setContentView(https://www.360docs.net/doc/38678760.html,yout.rainbow);

用程序动态定义线性布局

你也可以通过程序来创建和配置线性布局。这通过LinearLayout (android.widget.LinearLayout)类来实现。你能在https://www.360docs.net/doc/38678760.html,youtParams类中找到子级细节。同样地,典型的布局参数(https://www.360docs.net/doc/38678760.html,youtParams),如layout_height和layout_width, 以及边距参数(ViewGroup.MarginLayoutParams)也能用在LinearLayout对象上。

使用以前介绍过的setContentView()方法代替直接加载布局资源,你需要用Java创建屏幕内容,然后向setContentView()方法提供一个父级布局对象,这个对象包括了所有要作为它的子视图展示的控件内容。在这种情况下,你的父级布局对象是线性布局。

例如,下面的代码示例了如何用程序在Activity中实例化一个线性布局并在它的onCreate()方法中将三个T extView对象放入其中:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// setContentView(https://www.360docs.net/doc/38678760.html,yout.rainbow);

TextView tv1 = new TextView(this);

tv1.setText("FIRST");

tv1.setTextSize(100);

tv1.setGravity(Gravity.CENTER);

TextView tv2 = new TextView(this);

tv2.setTextSize(100);

tv2.setGravity(Gravity.CENTER);

tv2.setText("MIDDLE");

TextView tv3 = new TextView(this);

tv3.setTextSize(100);

tv3.setGravity(Gravity.CENTER);

tv3.setText("LAST");

LinearLayout ll = new LinearLayout(this);

ll.setOrientation(LinearLayout.VERTICAL);

ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

ll.setGravity(Gravity.CENTER);

ll.addView(tv1);

ll.addView(tv2);

ll.addView(tv3);

setContentView(ll);

}

下面两张图片展示了这个布局在设备竖屏和横屏下的样子:

让我们更近一步地研究一下上面的Java代码。首先,创建并配置三个TextView控件。每个控件都有文本大小(字体大小),文本对齐,以及文本值本身。然后,创建一个垂直方向的线性布局。它的布局参数允许它填充整个父级对象(在这里就是整个屏幕),并且它的对

齐导致所有子控件都排列在屏幕中间,而不是从左上角开始。每个TextView控件通过addView方法作为子控件添加到线性布局中。最后,当父级控件要在屏幕上显示时,线性布局被传到setContentView()方法中。

如你所见,当越来越多的控件要添加到屏幕时,代码量会很快地增长。为了易组织和可维护性,用程序定义并使用布局最好是用在特殊情况而不是一般情况。

探讨线性布局的重要特性和属性

现在让我们来看看有助于配置线性布局和它的子控件的一些重要属性。

一些特别的属性应用到线性布局。你会使用到线性布局最重要的属性包括:

方向属性(必须),取值可以是vertical或horizontal(类:LinearLayout)

对齐属性(可选),控制子控件在线性布局中如何排列和显示(类:LinearLayout)

layout_weight属性(可选,应用到每个子控件)指定每个子控件在父级线性布局中的相对重要性(类:https://www.360docs.net/doc/38678760.html,youtParams)

此外,通用的ViewGroup-style属性也应用到线性布局。这些属性包括:

通用布局参数如layout_height (必须)和layout_width (必须) (类:https://www.360docs.net/doc/38678760.html,youtParams)

边距布局参数如margin_top,margin_left,margin_right和margin_bottom (类:ViewGroup. MarginLayoutParams)

布局参数如layout_height和layout_width (类:https://www.360docs.net/doc/38678760.html,youtParams)

给子控件赋权

绝大部分线性布局的属性都是自明性的。然而layout_weight属性需要一些额外的讨论。与其它线性布局属性不同,其它属性应用在线性布局视图本身,而这个属性是应用在它的子控件上的。权值本身应该是一个数字(比如0.5,0.25,0.10,0.10,0.05),如果你把所有子控件的权值加起来等于1(100%)。

子控件的权值控件它在父线性布局中有多―重要‖或者留给其多少―空间‖。这一点最好通过例子来说明。让我们回到我们前面用的彩虹线性布局。为了允许所有子控件相同地―拉伸‖填充线性布局,不管屏幕的大小,我们使用layout_weight来对每个TextView赋予相对权值。因为有7种我们想赋相同权值的颜色,我们将1除以7大约得到0.143.然而,既然我们想要权值之和最后为1,因此5个控件权值设为0.14,另外两个为0.15——一个微小的区别使得总和刚刚好为1,但是这对于第一个和最后一个控件来说还是很明显的。

当屏幕上有足够空间来正确的展示所有控件的时候,这个权值技巧很有效。那就是说,当空间很紧的时候,权值属性可能会被其它因素覆盖,比如视图裁剪或者在TextView下试图不环绕文本。当我们改变rainbow.xml布局文件以包含相似水平布局(layout_height 还是设置为fill_parent)的时候,这变得很明显。

下面的两张图片展示这个相同的布局(只是改变到水平方向)在设备竖屏和横屏模式下可能的样子:

我们期望的是红色和紫色区域(权值0.15)比其它颜色(权值为0.14)会略大一些,但是显示出来却不是这样。如果你仔细看红色T extView,它应该比它边上橙色的T extView占用更多空间。然而,因为―Red‖是一个短单词,而―Orange‖不是,因此系统自动的作了一些冲撞调整,为了使得每个单词不会折行。这样的结果更令人高兴,但是这可能会有一些烦恼,如果这不是想要的效果的话。

总结

Android程序用户界面使用布局来定义,而线性布局是最基本的布局类型之一。线性布局允许子控件被组织在一行或一行(水平)或一列(竖直)上。子控件的位置可以使用对齐和权值属性进一步设置。[English]

作者:RockUX–WEB前端

出自:Android用户界面设计:线性布局

Android简单的登陆界面的设计开发

通信实训报告 -Android移动平台开发 学院:信息工程学院 班级: 学号: 姓名:

实训内容: 一.1.Andriod的简介 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread 和Android 3.0 Honeycomb。 Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。 Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。 2.Android构架图 二.1软件下载 Android SDK,网址是https://www.360docs.net/doc/38678760.html,. JDK的下载地址https://www.360docs.net/doc/38678760.html,/javase/downloads/widget/jdk6.jsp。Eclipse的下载网址是https://www.360docs.net/doc/38678760.html,/downloads/ 2.Android开发环境搭建

Android人机界面(UI)设计规范(带目录)

Android 人机界面设计规范 1Android 设计的依据 1.1 框架结构及流程 是什么使得android 有着独特的用户体验? 后台处理支持多任务功能 正在进行和事件驱动的提示信息 通过Widgets 和live folders 来实现实时信息的预览 用户想用时,任一应用程序都可以挑选和选择 android 不是关于程序的,它是关于活动,把任务分层, 1.2 架构基础 硬件平台 android 设备代表的是硬件和软件的完美组合。硬件辅助导航操作,并给android 提供更多更好的功能。当菜单没有开启,要把屏幕最大化时,菜单按钮可以在屏幕上提供更多的内容。返回按钮允许使用返回堆(back stack)。 竖屏与横屏 一般来说,用户界面开发竖屏与横屏。在新横屏也仍存在于新的Android 手机中。99%的android 布局支持横屏。 焦点和菜单 在触摸模式里没有焦点,只有轨迹球。Android 平台里没有鼠标焦点。确定你从未显示焦点。主菜单应该包括全部功能;它们与活动联系一起形成整体。菜单上的图标按重要性排序。如果有多于5 个图标,使用点击more menu 菜单来查看那些不太重要的菜单项。上下文菜单(长按)集中在一个特定对象。 总是把那些与所选项最相关的行为放在长按菜单的顶部。 需要记住的几点: 设计时要考虑速度和简洁 尽量分层来分等级 屏幕上的活动尽量最小 使用下载进度条,下载数据时,而不是让用户等待去看一个加载完全的页面。 考虑活动流而不是线性行为 1.3 屏幕上的行为

android 设计了特定的行为方式。在你的应用程序里利用好这一点。应该坚持android 行为的标准,避免混淆用户。 1.4 表达 细节使得产品集中在细节。程序的美学会帮助你集中注意在那些应用体验核心的关键任务上。API DEMO 是开始你的工具包的好地方。 2 用户界面原则 这部分试图讲述创造一个好的用户界面的一些基本的交互设计原则。这些原则是基本的,不止能应用于android 的用户界面设计,也可以应用于其他。苹果建议开发者花费60%的开发时间来进行设计工作。下面的用户界面原则将为好的设计提供一个基础。 2.1 隐喻 隐喻是构建一个基于操作任务心智模型的模块;用它们来传递应用程序的概念和功能。基于真实世界的应用对象可以帮助用户很快的理解该应用程序。当你设计你的应用程序时,要注意andriod 中存在的隐喻,不要重新定义它们。同时,检查你的应用程序执行的任务,看是否有些自然隐喻你可以使用。 2.2 反映用户的心智模型 用户已经有了一个来描述你的程序正在进行的任务的心智模型。这个心智模型产生于真实世界经验、其它软件和一般电脑基本知识的结合。比如说,用户在真实世界里有写字、寄信的经验,也会产生特定的期待,像写一封新的信,选一个接受者,然后寄出信。一个忽略用户心智模型的电子邮件程序用起来会很困难和不舒服。这是因为程序强加给用户一个不熟悉的概念模型,而不是建立一个用户已有的知识经验模式。 在设计程序用户界面之前,试着去发现你的用户的心智模型,这样帮助用户去执行任务。心智模型中内在的隐喻,它代表了任务的概念组成。在写信这个例子中,隐喻包括信件、邮包和信封。在涉及到照片的任务的思考模式中,隐喻包括照片、照相机和专辑。我们要努力地发现用户的期望,包括任务组成、组织、窗口布局的工作流、菜单和工具栏组织、控制面板的使用。 要通过努力地何必把个下面的特征与用户心智模型相融合: 熟悉性 用户的心智模型主要是建立在经验的基础上 简单化 一项任务的心智模型通常是流线型,关注任务的基本组成部分。尽管对于一个给定的任务有很多可选的细节,但是基本的组成部分占大部分,并且不会占用用户的注意。 可利用性Availability

第4章 Android用户界面设计

视图组件的使用模式 常用组件 高级组件 提示框与警告对话框

就是Android应用程序的开发过程。一般过程是先通过XML布局文件或Java代码创建界面布局,设定组件显示样式,随后获取UI组件对象,并处理组件事件响应。 视图组件的定义 资源的访问 生成视图组件资源标识 视图组件的引用 视图组件的事件响应 组件的常用属性

1.1视图组件的定义 使用XML布局文件定义视图组件 使用Java代码定义视图组件(不推荐)

1.1视图组件的定义 使用XML布局文件定义视图组件 Android平台为大多数视图组件以及其子类提供了XML标记,可通过XML布局文件中的标记来定义视图组件。XML中的每个元素代表了一个组件,即元素名称对应相应的Java类。

1.1视图组件的定义

相关文档
最新文档