创建用户界面
本节课程中,你将创建一个XML布局文件,里面包含一个文本域和一个按钮.下一节课程中,当点击按钮发送文本域中的内容
给另一个活动页面时,你的程序将响应.
安卓应用的图形用户界面通过具有层级结构的View和ViewGroup对象创建.View对象长用于用户界面的局部部件,例如:
按钮,文本域.ViewGroup对象一个不可见的用于定义子视图布局的,例如:网格视图布局,垂直视图布局.
安卓提供了一个同View和ViewGroup对应的XML文件.因此,你可以使用用户界面元素的层级结构在
这个XML文件中定义你的用户界面.
布局对象是ViewGroup的子元素,在这个练习中,你将学习线性布局.
设置线性布局:
1.在Android Studio中,找到res/layout文件夹,打开activity_my.xml文件.
当你创建这个工程时,选择的BlankActivity模板对应的activity_my.xml文件中包含了一个相对布局
的根视图和一个文本视图的子视图.
2.在预览面板上,单击隐藏图标按钮关闭预览面板.
在Android Studio中,当你打开一个布局文件时,最先显示的就是预览面板.在面板中点击元素就会在
设计面板中打开WYSIWYG工具.在本节课程中,我们学习直接通过XML文件布局和添加内容.
3.删除"<TextView>"元素.
4.将"<RelativeLayout>"元素改成"<LinearLayout>"
5.添加"android:orientation"属性,并设置为"horizontal".
6.删除"android:padding"属性和"tools:context"属性.
最终结果如下:
res/layout/activity_my.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout>
线性布局对象(LinearLayout)是一个视图容器,用于设置子视图为垂直布局还是水平布局.例如"android:orientation"
如属性值所规定的那样.每一个线性布局对象的子元素都会根据XML文件中指定的顺序显示在屏幕上.
为了详细说明视图的大小,可以使用另外两个属性"android:layout_width"和"android:layout_height"定义.
因为LinearLayout是布局根视图,所以它应该覆盖整个屏幕区域以提供给程序使用.将宽度和高度设置为"match_parent",
这个值声明视图的将扩展自己的宽,高以适应父视图的宽和高.
添加一个文本域:
和定义每一个视图对象一样,你必须定义确切的XML属性来详细说明编辑框对象的属性.
1.在activity_my.xml文件的"<LinearLayout>"元素中,定义一个"<EditText>"元素
"id"属性设置为"@+id/edit_message".
2.将"layout_width"和"layout_height"属性的值设置为"wrap_content".
3.定义一个名为"edit_message"的字符串对象属性"hint".
"<EditText>元素最终如下:
res/layout/activity_my.xml
<EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" />
下面我们对在"<EditText>"元素中添加的属性做详细说明:
android:id
为视图指定一个唯一的标识符,你可以通过这个唯一的标识符从你的程序代码中引用这个对象,
例如:读取和操作这个对象(我们将在下节课程中讲述).
首先"@"符号是必须的,通过它你可以从XML中引用任何资源对象.接下来是资源类型(在这里是id),
然后是正斜线"/",最后是资源名称(edit_message).
位于资源类型前面的加号(+),只在你第一次定义资源ID时才需要添加.当编译程序时,SDK工具会
使用这个ID名创建一个新的资源ID,并添加到工程下gen/R.java文件中,指向"EditText"元素.
通过这种方式声明资源ID后,再引用这个ID时就不需要加号(+)了.只在定义新的资源ID时才
需要使用加号(+),定义或声明其他资源(例如:字符串,布局等)不需要使用加号(+).
资源对象:
一个资源对象是与一个应用程序资源(如:位图,布局文件,字符串)相关联的唯一整数名称.
每一个资源在工程路径下的gen/R.java文件中都有一个对应的资源对象.例如,当你需要
为"android:hint"属性定义一个字符串值时,你可以使用R类中的对象名称来引用资源.
你也可以通过使用"android:id"属性为相关视图创建任意资源ID,通过这个资源ID,你可以
其他代码中引用这个视图.
你每次编译程序,SDK都会重新构建R.java文件.因此请不要手动修改R.java文件.
android:layout_width和android:layout_height
不使用特定的值设置宽度和高度,而是使用"wrap_content",目的在于使用这个值会使
视图自适应内容的大小.如果是用"match_parent",则"EditText"元素将会充满屏幕,
因为它匹配的是父类"LinearLayout"的大小.
android:hint
当文本域为空是,默认显示这个属性的字符串.之所以使用"@string/edit_message"
指向独立文件中的字符串资源,而不使用硬编码字符串,是因为它指向的是一个具体的资源
(不仅仅是一个标识符),这里不需要使用加号(+).然而,由于目前你还没有定义字符串资源,
你将看到一个编译错误.在下一个节中定义字符串资源后将修复这个问题.
备注:这个字符串资源和元素ID拥有相同的名称"edit_message".然而,资源的引用总是被
资源类型域(如:id或string)却分开的,所以使用相同的名称并不会造成冲突.
添加字符串资源:
默认在工程路径/res/values/strings.xml下有一个字符串资源文件,在这里你可以添加一个名为
"edit_message"的字符串,设置值为"Enter a message.".
1.在Android Studio中打开res/values文件夹下的strings.xml文件.
2.添加一个名为"edit_message"值为"Enter a message"的字符串元素.
3.添加一个名为"button_send"值为"Send"的字符串元素.
在下一节中,你将会使用这个字符串创建一个按钮.
4.删除"hello world"行.
strings.xml文件最终如下:
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">My First App</string> <string name="edit_message">Enter a message</string> <string name="button_send">Send</string> <string name="action_settings">Settings</string> <string name="title_activity_main">MainActivity</string> </resources>
通常用户界面中的每一个文本都有一个对应的字符串资源.这样方便在同一个地方管理所有的用户
界面文本,这使得查找和更新文本信息变得非常容易.将字符串外部化,可以非常方便的定义不同的
替代字符串资源,使你的程序能够非常容易的以不同的语言本地化.
添加按钮:
1.打开res/layout文件夹中的activity_my.xml文件
2.在"<LinearLayout>"元素中定义一个"<Button>"元素,紧跟着"<EditText>"元素.
3.设置按钮的宽和高为"wrap_content",使按钮自适应文本内容的大小.
4.通过"android:text"属性定义按钮的内容,将按钮的内容设置为之前定义的"button_send"字符串资源.
最终"<LinearLayout>"元素如下:
res/layout/activity_my.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /> </LinearLayout>
备注:这个按钮不需要定义"android:id"属性,因为在活动类的代码中没有引用这个按钮.
到这里,显示结果如下图.文本编辑框和按钮的大小自适应内容的大小.
这样做对按钮组件而言是不错的,但是对文本框来说就不太好了,因为用户可能在文本框中输入较长的内容.
使文本框填充满整个屏幕宽度是一个很好的选择.你可以通过在"LinearLayout"中定义"weight"属性
来实现.定义方式为"android:layout_weight".
"weight"的值是一个数字,相对于被兄弟视图消耗的空间来指定其余每个视图应该占有的空间.就像一种饮料
中的原料组合一样:其中苏打为2个单位,糖浆为1个单位,也就是说这种饮料的三分之二是苏打.例如,如果你定
义第一个视图的"weight"为2,另一个视图的"weight"为1,则第一个视图会占用总空间的2/3,剩余的空间被
另一个视图占用.如果你再添加第三个视图,"weight"为1,这时第一个视图占用的空间为1/2,另外两个视图各
占1/4.
默认所有视图的"weight"的值为0.如果你只设置了一个视图的"weight"值大于0,那么这个视图将填满其他视图剩余的所有空间.
使输入框占满屏幕宽度:
想要占满你的布局对象中"EditText"元素剩余的空间,如下:
1.在activity_my.xml文件中设置"<EditText>"元素的"layout_weight"属性值为1.
2.设置"<EditText>"元素的"layout_width"属性值为"0dp".如下:
res/layout/activity_my.xml
<EditText android:layout_weight="1" android:layout_width="0dp" ... />
为了提高布局效率,设置"weight"属性时应该把"EditText"的"width"属性值设置为0.因为"wrap_content"
值指定系统计算的宽度值在这里根本就没用."weight"值需要的宽度值是通过另外的计算机制计算的.
目前图形界面结果如下图:
activity_my.xml文件的整体内容如下:
res/layout/activity_my.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <EditText android:id="@+id/edit_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /> </LinearLayout>
运行你的应用:
布局是由创建工程时SDK生成的默认Activity类提供的.
运行程序查看结果:
* 单击Android Studio工具栏中的"Run"图标.
* 或者从命令行进入到工程跟路径下,执行命令:
ant debug adb install bin/MyFirstApp-debug.dpk
相关推荐
创建第一个Android应用的入门知识涵盖了从搭建开发环境到项目结构的建立,接下来我会详细介绍这些知识点。 首先,Android工程是构成Android应用的所有源代码文件的集合。一个完整的Android应用工程通常包含以下元素...
"第一个Android应用-您好,中国!" 是一个引导性的项目,旨在帮助初学者理解基本的Android Studio环境和构建过程。Android Studio是Google官方推荐的Android应用程序开发集成开发环境(IDE),提供了丰富的功能来...
标题中的"android-x86-64-...不过,随着每一代更新,Android-x86对硬件的支持越来越好,为用户提供了一种在非Android设备上使用Android应用的途径。对于开发者而言,它也是一个测试Android应用在不同设备上的有效平台。
“android-studio-2021.3.1.17-windows.exe”是Android Studio的Dolphin版本,具体更新到2021年3月的第1次补丁,版本号17。这个版本的发布旨在修复之前版本中发现的问题,提升整体稳定性和性能。 三、主要特性 1. *...
在本教程“013集-创建第一个Android 5.0应用程序”中,我们将深入探讨如何从零开始构建一个简单的Android应用,这对于初次接触Android开发的初学者来说是一次宝贵的入门学习机会。Android 5.0,也被称为Lollipop版本...
《深入浅出Android--Google手持设备应用程序设计》这本书旨在通过实例教学,帮助读者全面掌握Android应用开发技术,深入...通过阅读这本书,你将能够独立设计和实现富有创新的Android应用程序,满足不同用户的需求。
这个实例旨在教你如何创建一个类似QQ的应用程序界面,包括登录界面、主界面以及一些基本的功能实现。以下将详细讲解涉及到的关键知识点: 1. **布局设计**: - 使用XML布局文件来定义界面元素,如EditText(文本...
总之,Android Studio 201.7042882为Windows用户提供了一个强大且全面的开发环境,通过熟练掌握其特性和最佳实践,开发者可以更高效地构建出高质量的Android应用程序。无论是初学者还是经验丰富的开发者,都能从中...
这个包主要是为了开发者在构建和测试Android应用程序时使用,特别是针对Android 13(API级别34)的开发工作。在Android SDK中,SDK Platforms是核心部分,提供了开发环境所需的平台框架、系统库和API文档。 **...
总的来说,"uniWeather"项目涵盖了Android应用开发的多个核心概念和技术,从用户界面设计到后台数据处理,是学习和理解Android开发的宝贵资源。通过深入研究这个项目,开发者可以提升自己的Android应用开发技能。
5. **UI设计**:使用Android的布局和控件创建用户界面,确保用户体验良好,提供反馈机制,如加载指示器和识别结果展示。 6. **错误处理**:考虑各种异常情况,如无相机权限、图片质量问题等,并提供相应的错误提示...
- 如何创建第一个Android项目 - 应用发布流程概述 2. **第2章:用户界面食谱** - **介绍**:用户界面是任何应用程序的关键部分之一。本章将指导开发者如何设计和构建直观且易于使用的用户界面。 - **知识点**: ...
在Android应用开发中,创建用户注册界面是构建任何应用程序的基础步骤之一。这个过程涉及到UI设计、布局管理以及用户交互元素的设置。以下将详细讲解如何在Android环境中实现用户注册界面的开发。 首先,我们需要在...
9. **UI设计**:每个新版本的Android都会对用户界面进行改进,Android 12也不例外。例如,Material Design的设计语言得到了更新,引入了更大的动态性和个性化选项,开发者需要学习如何利用这些新特性来提升用户体验...
3. **模拟器与设备支持**:Android Studio内置了AVD(Android Virtual Device)管理器,用户可以创建并管理各种设备配置的虚拟设备进行测试。此外,它还支持连接真实设备进行调试,确保应用在多种硬件配置上都能正常...
创建第一个Android项目 - 打开Android Studio,创建一个新的Android项目。 - 选择合适的模板,设置应用名称、包名等基本信息。 - 编写简单的代码测试应用是否正常运行。 #### 三、Android应用程序架构 Android...
3. **用户界面(UI)**:应用的UI设计简洁明了,源码中的XML布局文件和Java/Kotlin活动类共同构成了交互界面。例如,`MainActivity`控制设备连接和断开,`DFUService`处理固件更新流程。 三、工作流程 1. **设备...
在这个第三讲中,我们将聚焦于创建第一个Android应用,这是每个Android开发者旅程的起点。 首先,我们了解Android应用程序的基本结构。一个标准的Android应用通常由多个组件构成,包括Activity(活动)、Service...
在Android应用开发中,页面跳转是用户交互的基础,它涉及到Activity的概念以及Intent的使用。在Eclipse这个经典的Android开发环境中,我们通常会通过编写Java代码来实现页面间的跳转。接下来,我们将深入探讨Android...
综上所述,这个压缩包中的代码可能包含了一个完整的Android项目,展示了如何使用`BottomNavigationView`组件创建并实现底部导航栏的滑动效果,同时也涉及到了Android应用开发中的一些常见技术和最佳实践。...