本文主要是介绍Android编写程序界面(控件+布局+大量实例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文/叶琛
作为软件开发者,如果希望自己的软件受到用户喜欢和广泛使用,就应该意识到界面设计和功能开发同样重要。
从实际经验来看,一个优秀的软件,首先得满足对用户友好的操作界面。界面美观的应用程序可以增大用户粘性,同时吸引更多新用户。
阅读我的前一篇文章《Android开发(一)|第一个Android项目》,相信读者对于创建安卓项目已不是问题,接下来要做的第二件事就是在空白活动的基础上编写程序界面。
Android为我们提供了大量UI开发工具,合理使用它们,就可以编写出各式各样的漂亮界面。
例如简单的机票查询界面:
创建好一个MainActivity活动,项目命名为AllTest(可随意),然后我们来实际开发一个简单美观的程序界面。
1、 如何编写程序界面
Eclipse(本文选用)和Android Stdio都有可视化界面编辑工具,可以直接拖拽控件并在视图中修改属性。不过初学时并不推荐这种方法。而且这种方式作出的界面屏幕适配性一般较差。
我们采用最基本的方式实现:编写XML代码。每当新建一个活动,ADT会自动帮你生成一个.XML文件,我们可以按需要修改增添。
2、 常见控件使用方法
借助大量的UI控件和合理的排版规划,我们可以非常轻松的编写出想要的界面效果。
可以通过一张图片了解Android控件的继承关系:
1) TextView
TextView是Android最简单的控件。它主要用于在界面上显示一段文本信息(但不允许用户修改内容)。
我们将activity_main.xml中的代码修改如下:
android:id即给控件定义一个id,之后通过这个id就能定位到该控件。
Android中所有控件都有这两个属性:android:layout_width|android:layout_height,指定了控件的宽度和高度。可选值为match_parent/wrap_content,前者表示让当前控件大小和父布局一致;后者表示由控件内容决定当前控件大小(即刚好包含里面的内容)。
android:text表示文本框显示的内容。TextView还有很多属性可以设置,例如颜色(android:textColor 以十六进制表示)、文字对齐方式(android:gravity)等等。各控件的属性不用特意记,需要时查阅文档即可。
关于布局,我们这里采用LinearLayout线性布局方式,待会再细说。
AllTest右键→Run as→Android Application启动模拟机,得到如图界面:
2) Button
Button是程序和用户交互的一个重要控件。它可配置的属性基本和TextView相同。
我们可以在activity_main.xml中这样加入Button:
更新Android Application,得到如下效果:
为什么按钮占据整行了呢?因为它的属性android:layout_width被我们设置为match_parent,和父布局LinearLayout的一样。
在主活动中为按钮注册一个监听器,当点击按钮将执行onClick()方法,完成我们需要的操作。具体实现过程将在本系列第四篇文章中,和活动数据的传递一起讲述。现在我们先纯粹显示一个按钮。
3) EditText
EditText是程序与用户进行交互的另一重要控件,它允许用户在控件中输入和编辑内容,并且可以在程序中对这些内容进行处理。
我们发微博、聊QQ,都将使用到它。现在在界面中加入EditText,继续修改activity_main.xml中的代码:
android:hint属性指定了一段提示性文本。android:maxLines指定EditText最大行数为两行,当输入的内容超过两行,文本会向上滚动,EditText不再拉伸。
得到如下效果:
到这儿我们能总结出Android控件的使用规律了:基本上用法大同小异,给控件定义一个id,再指定宽度、高度,然后加些控件特有的属性就可以了。使用XML来编写界面一点都不难。
4)ImageView
ImageView是用于在界面上展示一张图片的控件,它能让我们的程序界面变得更加丰富多彩。
drawable文件夹下已自动生成一张ic_launcher.png图片,我们先在界面上展示它。修改activity_main.xml中的代码:
这里使用android:src属性给ImageView指定了一张图片(格式不限),因为图片宽高均设为wrap_content,所以无论图片多大都能完整展示出来。重新运行程序:
5)ListView
ListView绝对算Android最常用控件之一,它允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据会滚动出屏幕。
回忆一下,我们每天都在使用这个控件。例如翻阅微博、查看手机联系人等等。
不过比起前面几种控件,ListView用法相对复杂很多。笔者将会在本系列第三篇文章中单独对ListView进行详细讲解。
除了上面提到的常见控件,还有ProgressBar(进度条)、AlertDialog(弹出式对话框)、AnalogClock(时钟)等等,今后在不断学习过程中会接触更多的控件。
当系统控件不够用时,我们还可以自定义控件以达到目的。限于篇幅这儿先不演示啦。
3、 四种基本布局
一个丰富的界面常要有很多个控件组成,如何才能让各个控件都有条不紊地摆放在界面上?这就需要借助布局。
布局是一种可用于放置很多控件的容器,它能按一定规律调整内部控件的位置,从而编写出精美界面。
Android中一共有四种基本布局,我们来逐一了解:
(1) LinearLayout线性布局
这个布局会将它所包含的控件在线性方向上依次排列。android:orientation属性指定了排列方向,之前展示控件时就采用了这种布局的“vertical”垂直方向,所有控件排成了一列。
如果指定的是“horizontal”,控件就会在水平方向上排列。
(2) RelativeLayout相对布局
这是另一常用布局,相比LinearLayout显得更加随意。它可以通过相对定位的方式让控件出现在布局的任何位置。
RelativeLayout属性比较多,但都有规律可循,并不难理解记忆。
我们继续通过实例体会,修改activity_main.xml中的代码:
类似android:layout_alignParentLeft的属性可能之前没接触过,可它的名字已经完全说明了它的作用——控件相对于父布局左对齐。重新运行程序:
上例控件都是相对于父布局进行定位的,还可以相对于控件进行定位,只要改变相应属性,具体可参见下表,不再赘述。
(3) FrameLayout
相对于前两种布局,FrameLayout可简单多了。因为它没有任何定位方式,所有的控
件都会摆放在布局的左上角。因此应用场景也少了很多。很简单吧!这里我们不再演示。
(4) TableLayout
TableLayout允许我们使用表格的方式来排列控件。
表格自然会有行和列。设计表格时我们尽量让每一行拥有相同列数,这样的表格是最简单的。当表格的某行一定要有不相等列数时,可以通过合并单元格的方式处理。
通过一个登录界面的实例化来使用这个布局。可以这样修改activity_main.xml中的代码:
在TableLayout中每加入一个TableRow,表示在表格中添加一行;在TableRowt每加入一个控件,就表示在该行中加入一列。
在TableLayout中我们无法指定控件宽度,但是可以通过android:stretchColumns属性解决。它允许将TableLayout中的某一列拉伸,以达到自适应屏幕宽度的作用。
将其值指定为1,如果表格不能完全占满屏宽,就拉伸第二列。没错!“1”就是拉伸第二列,“0”就是拉伸第一列。
运行这个程序:
而关于点击按钮的消息响应以及用户名、密码的数据存储这里暂不讲解,重点示范TableLayout布局的使用。
布局还可以嵌套布局,以形成层次分明、功能健全的精美界面。activity_main.xml的代码并不复杂:
回头看之前的机票界面,就是通过LinearLayout布局嵌套加上简单、常用控件完成的:
现在的你,完全可以做到这样的效果甚至比它更精美。
如果你新编出一个精美的界面,欢迎留言或私信共享。如果编程中出现解决不了的困惑,我会尽最大努力帮助你解答。
最后一个tip:当我们开发一个项目时,强烈建议把其它不相关的project暂时全部关闭,避免修改代码时改错地方:)
BTW:接下来还会带来一系列的安卓开发教程文章,您的支持是我最大的持久力!
作者:叶琛
一个痴迷旅行的 IT程序狗
这篇关于Android编写程序界面(控件+布局+大量实例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!