Android编写程序界面(控件+布局+大量实例)

2024-03-26 13:50

本文主要是介绍Android编写程序界面(控件+布局+大量实例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


96 
叶琛_  关注
2016.10.02 11:45*  字数 2614  阅读 11559 评论 15

文/叶琛

作为软件开发者,如果希望自己的软件受到用户喜欢和广泛使用,就应该意识到界面设计和功能开发同样重要。

从实际经验来看,一个优秀的软件,首先得满足对用户友好的操作界面。界面美观的应用程序可以增大用户粘性,同时吸引更多新用户。

阅读我的前一篇文章《Android开发(一)|第一个Android项目》,相信读者对于创建安卓项目已不是问题,接下来要做的第二件事就是在空白活动的基础上编写程序界面。

Android为我们提供了大量UI开发工具,合理使用它们,就可以编写出各式各样的漂亮界面。

例如简单的机票查询界面:

机票信息查询

创建好一个MainActivity活动,项目命名为AllTest(可随意),然后我们来实际开发一个简单美观的程序界面。


1、 如何编写程序界面

Eclipse(本文选用)和Android Stdio都有可视化界面编辑工具,可以直接拖拽控件并在视图中修改属性。不过初学时并不推荐这种方法。而且这种方式作出的界面屏幕适配性一般较差。

我们采用最基本的方式实现:编写XML代码。每当新建一个活动,ADT会自动帮你生成一个.XML文件,我们可以按需要修改增添。

.XML位置

2、 常见控件使用方法

借助大量的UI控件和合理的排版规划,我们可以非常轻松的编写出想要的界面效果。

可以通过一张图片了解Android控件的继承关系:

所有控件继承自android.View

1) TextView

TextView是Android最简单的控件。它主要用于在界面上显示一段文本信息(但不允许用户修改内容)。

我们将activity_main.xml中的代码修改如下:

定义TextView

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启动模拟机,得到如图界面:

TextView效果

2) Button

Button是程序和用户交互的一个重要控件。它可配置的属性基本和TextView相同。

我们可以在activity_main.xml中这样加入Button:

定义Button

更新Android Application,得到如下效果:

Button效果

为什么按钮占据整行了呢?因为它的属性android:layout_width被我们设置为match_parent,和父布局LinearLayout的一样。

在主活动中为按钮注册一个监听器,当点击按钮将执行onClick()方法,完成我们需要的操作。具体实现过程将在本系列第四篇文章中,和活动数据的传递一起讲述。现在我们先纯粹显示一个按钮。

3) EditText

EditText是程序与用户进行交互的另一重要控件,它允许用户在控件中输入和编辑内容,并且可以在程序中对这些内容进行处理。

我们发微博、聊QQ,都将使用到它。现在在界面中加入EditText,继续修改activity_main.xml中的代码:

定义EditText

android:hint属性指定了一段提示性文本。android:maxLines指定EditText最大行数为两行,当输入的内容超过两行,文本会向上滚动,EditText不再拉伸。

得到如下效果:

EditText效果

到这儿我们能总结出Android控件的使用规律了:基本上用法大同小异,给控件定义一个id,再指定宽度、高度,然后加些控件特有的属性就可以了。使用XML来编写界面一点都不难。

4)ImageView

ImageView是用于在界面上展示一张图片的控件,它能让我们的程序界面变得更加丰富多彩。

drawable文件夹下已自动生成一张ic_launcher.png图片,我们先在界面上展示它。修改activity_main.xml中的代码:

定义ImageView

这里使用android:src属性给ImageView指定了一张图片(格式不限),因为图片宽高均设为wrap_content,所以无论图片多大都能完整展示出来。重新运行程序:

ImageView效果

5)ListView

ListView绝对算Android最常用控件之一,它允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据会滚动出屏幕。

回忆一下,我们每天都在使用这个控件。例如翻阅微博、查看手机联系人等等。

不过比起前面几种控件,ListView用法相对复杂很多。笔者将会在本系列第三篇文章中单独对ListView进行详细讲解。


除了上面提到的常见控件,还有ProgressBar(进度条)、AlertDialog(弹出式对话框)、AnalogClock(时钟)等等,今后在不断学习过程中会接触更多的控件。

当系统控件不够用时,我们还可以自定义控件以达到目的。限于篇幅这儿先不演示啦。

3、 四种基本布局

一个丰富的界面常要有很多个控件组成,如何才能让各个控件都有条不紊地摆放在界面上?这就需要借助布局。

布局是一种可用于放置很多控件的容器,它能按一定规律调整内部控件的位置,从而编写出精美界面。

Android中一共有四种基本布局,我们来逐一了解:

(1) LinearLayout线性布局

这个布局会将它所包含的控件在线性方向上依次排列。android:orientation属性指定了排列方向,之前展示控件时就采用了这种布局的“vertical”垂直方向,所有控件排成了一列。

LinearLayout布局

如果指定的是“horizontal”,控件就会在水平方向上排列。

水平排列布局

(2) RelativeLayout相对布局

这是另一常用布局,相比LinearLayout显得更加随意。它可以通过相对定位的方式让控件出现在布局的任何位置。

RelativeLayout属性比较多,但都有规律可循,并不难理解记忆。

我们继续通过实例体会,修改activity_main.xml中的代码:

RelativeLayout布局

类似android:layout_alignParentLeft的属性可能之前没接触过,可它的名字已经完全说明了它的作用——控件相对于父布局左对齐。重新运行程序:

RelativeLayout效果

上例控件都是相对于父布局进行定位的,还可以相对于控件进行定位,只要改变相应属性,具体可参见下表,不再赘述。

RelativeLayout的部分属性

(3) FrameLayout

相对于前两种布局,FrameLayout可简单多了。因为它没有任何定位方式,所有的控

件都会摆放在布局的左上角。因此应用场景也少了很多。很简单吧!这里我们不再演示。

(4) TableLayout

TableLayout允许我们使用表格的方式来排列控件。

表格自然会有行和列。设计表格时我们尽量让每一行拥有相同列数,这样的表格是最简单的。当表格的某行一定要有不相等列数时,可以通过合并单元格的方式处理。

通过一个登录界面的实例化来使用这个布局。可以这样修改activity_main.xml中的代码:

TableLayout布局
TableLayout布局(接上)


在TableLayout中每加入一个TableRow,表示在表格中添加一行;在TableRowt每加入一个控件,就表示在该行中加入一列。

在TableLayout中我们无法指定控件宽度,但是可以通过android:stretchColumns属性解决。它允许将TableLayout中的某一列拉伸,以达到自适应屏幕宽度的作用。

android:stretchColumns属性

将其值指定为1,如果表格不能完全占满屏宽,就拉伸第二列。没错!“1”就是拉伸第二列,“0”就是拉伸第一列。

运行这个程序:

TableLayout布局效果

而关于点击按钮的消息响应以及用户名、密码的数据存储这里暂不讲解,重点示范TableLayout布局的使用。


布局还可以嵌套布局,以形成层次分明、功能健全的精美界面。activity_main.xml的代码并不复杂:

LinearLayout布局嵌套

回头看之前的机票界面,就是通过LinearLayout布局嵌套加上简单、常用控件完成的:

简单的机票信息界面

现在的你,完全可以做到这样的效果甚至比它更精美。

如果你新编出一个精美的界面,欢迎留言或私信共享。如果编程中出现解决不了的困惑,我会尽最大努力帮助你解答。

最后一个tip:当我们开发一个项目时,强烈建议把其它不相关的project暂时全部关闭,避免修改代码时改错地方:)

BTW:接下来还会带来一系列的安卓开发教程文章,您的支持是我最大的持久力!


作者:叶琛

一个痴迷旅行的 IT程序狗

这篇关于Android编写程序界面(控件+布局+大量实例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848714

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处