`

你的第一个android应用----(3)创建用户界面

阅读更多

                                                                     创建用户界面

    本节课程中,你将创建一个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

 

  • 大小: 5.2 KB
  • 大小: 5.2 KB
  • 大小: 18.5 KB
分享到:
评论

相关推荐

    入门篇创建你的第一个android应用-Building Your First App(一):

    创建第一个Android应用的入门知识涵盖了从搭建开发环境到项目结构的建立,接下来我会详细介绍这些知识点。 首先,Android工程是构成Android应用的所有源代码文件的集合。一个完整的Android应用工程通常包含以下元素...

    第一个Android应用-您好,中国!.pptx

    "第一个Android应用-您好,中国!" 是一个引导性的项目,旨在帮助初学者理解基本的Android Studio环境和构建过程。Android Studio是Google官方推荐的Android应用程序开发集成开发环境(IDE),提供了丰富的功能来...

    android-x86-64-9.0-r2.iso

    标题中的"android-x86-64-...不过,随着每一代更新,Android-x86对硬件的支持越来越好,为用户提供了一种在非Android设备上使用Android应用的途径。对于开发者而言,它也是一个测试Android应用在不同设备上的有效平台。

    android-studio-2021.3.1.17-windows.exe

    “android-studio-2021.3.1.17-windows.exe”是Android Studio的Dolphin版本,具体更新到2021年3月的第1次补丁,版本号17。这个版本的发布旨在修复之前版本中发现的问题,提升整体稳定性和性能。 三、主要特性 1. *...

    013集-创建第一个android5.0应用程序

    在本教程“013集-创建第一个Android 5.0应用程序”中,我们将深入探讨如何从零开始构建一个简单的Android应用,这对于初次接触Android开发的初学者来说是一次宝贵的入门学习机会。Android 5.0,也被称为Lollipop版本...

    深入浅出Android--Google手持设备应用程序设计

    《深入浅出Android--Google手持设备应用程序设计》这本书旨在通过实例教学,帮助读者全面掌握Android应用开发技术,深入...通过阅读这本书,你将能够独立设计和实现富有创新的Android应用程序,满足不同用户的需求。

    Android应用小实例--仿QQ界面

    这个实例旨在教你如何创建一个类似QQ的应用程序界面,包括登录界面、主界面以及一些基本的功能实现。以下将详细讲解涉及到的关键知识点: 1. **布局设计**: - 使用XML布局文件来定义界面元素,如EditText(文本...

    android-studio-ide-201.7042882-windows.zip

    总之,Android Studio 201.7042882为Windows用户提供了一个强大且全面的开发环境,通过熟练掌握其特性和最佳实践,开发者可以更高效地构建出高质量的Android应用程序。无论是初学者还是经验丰富的开发者,都能从中...

    Android SDK (SDK Platforms)-android-34-ext8.zip

    这个包主要是为了开发者在构建和测试Android应用程序时使用,特别是针对Android 13(API级别34)的开发工作。在Android SDK中,SDK Platforms是核心部分,提供了开发环境所需的平台框架、系统库和API文档。 **...

    Android代码-一个android天气应用程序

    总的来说,"uniWeather"项目涵盖了Android应用开发的多个核心概念和技术,从用户界面设计到后台数据处理,是学习和理解Android开发的宝贵资源。通过深入研究这个项目,开发者可以提升自己的Android应用开发技能。

    android-ocr-master,android-ocr-master

    5. **UI设计**:使用Android的布局和控件创建用户界面,确保用户体验良好,提供反馈机制,如加载指示器和识别结果展示。 6. **错误处理**:考虑各种异常情况,如无相机权限、图片质量问题等,并提供相应的错误提示...

    Android Recipes- A Problem-Solution Approach 2th

    - 如何创建第一个Android项目 - 应用发布流程概述 2. **第2章:用户界面食谱** - **介绍**:用户界面是任何应用程序的关键部分之一。本章将指导开发者如何设计和构建直观且易于使用的用户界面。 - **知识点**: ...

    Android应用开发-用户注册界面开发.pptx

    在Android应用开发中,创建用户注册界面是构建任何应用程序的基础步骤之一。这个过程涉及到UI设计、布局管理以及用户交互元素的设置。以下将详细讲解如何在Android环境中实现用户注册界面的开发。 首先,我们需要在...

    Android SDK (SDK Platforms)-android-31.zip

    9. **UI设计**:每个新版本的Android都会对用户界面进行改进,Android 12也不例外。例如,Material Design的设计语言得到了更新,引入了更大的动态性和个性化选项,开发者需要学习如何利用这些新特性来提升用户体验...

    android-studio-ide-202.7351085-windows

    3. **模拟器与设备支持**:Android Studio内置了AVD(Android Virtual Device)管理器,用户可以创建并管理各种设备配置的虚拟设备进行测试。此外,它还支持连接真实设备进行调试,确保应用在多种硬件配置上都能正常...

    Android应用程序开发

    创建第一个Android项目 - 打开Android Studio,创建一个新的Android项目。 - 选择合适的模板,设置应用名称、包名等基本信息。 - 编写简单的代码测试应用是否正常运行。 #### 三、Android应用程序架构 Android...

    Android-nRF-Toolbox-master 源码

    3. **用户界面(UI)**:应用的UI设计简洁明了,源码中的XML布局文件和Java/Kotlin活动类共同构成了交互界面。例如,`MainActivity`控制设备连接和断开,`DFUService`处理固件更新流程。 三、工作流程 1. **设备...

    Android视频-3

    在这个第三讲中,我们将聚焦于创建第一个Android应用,这是每个Android开发者旅程的起点。 首先,我们了解Android应用程序的基本结构。一个标准的Android应用通常由多个组件构成,包括Activity(活动)、Service...

    android应用跳转界面

    在Android应用开发中,页面跳转是用户交互的基础,它涉及到Activity的概念以及Intent的使用。在Eclipse这个经典的Android开发环境中,我们通常会通过编写Java代码来实现页面间的跳转。接下来,我们将深入探讨Android...

    Android代码-系统主界面下方的小按钮滑动效果--SlideD.zip

    综上所述,这个压缩包中的代码可能包含了一个完整的Android项目,展示了如何使用`BottomNavigationView`组件创建并实现底部导航栏的滑动效果,同时也涉及到了Android应用开发中的一些常见技术和最佳实践。...

Global site tag (gtag.js) - Google Analytics