`

你的第一个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高级编程--源代码

     ◆如何使用布局和定制view创建用户界面  ◆存储和共享应用程序数据的技术  ◆如何创建基于地图的应用程序,如何使用gps和地理编码位置等基于位置的服务  ◆如何创建和使用后台服务及notification  ◆使用加速...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    Android应用开发详解

    Android开发基础,讲述了Android开发环境的搭建、Android常用工具的使用和第一个Android应用程序的开发 第二篇 技术篇 第3章 Android中的资源访问 Android 中的资源访问,讲述了如何定义和访问Android中的外部...

    实验1--Android基础入门与Android-UI开发应用(1).doc

    ----------------------- 实验1--Android基础入门与Android-UI开发应用(1)全文共3页,当前为第1页。 实验1--Android基础入门与Android-UI开发应用(1)全文共3页,当前为第2页。 实验1--Android基础入门与Android-UI...

    Android应用开发详解pdf.pdf

     第2章 Android开发基础Android开发基础,讲述了Android开发环境的搭建、Android常用工具的使用和第一个Android应用程序的开发  第二篇 技术篇第3章 Android中的资源访问Android 中的资源访问,讲述了如何定义和...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    Android移动应用开发(第3版)卷Ⅰ基础篇 (Shane Conder, Lauren Darcey) PDF扫描版

    内容包括Android平台概览、Android应用程序设计精髓、Android用户界面设计精髓、Android应用程序设计精髓、对外发布你的Android应用程序和附录6个部分。附录还包含了Android开发常用工具(模拟器、DDMS和Eclipse)的...

    《Android应用开发揭秘》附带光盘代码.

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    Android移动应用开发实验指导书.docx

    配置:winxp或win7系统,内存大于4G,硬盘250G及以上 JDK1.7 、Eclipse、ADT、Android SDK 实验主要技术基础 (1)活动是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。...

    Android 4高级编程(第3版)源代码

    第4章 创建用户界面 第5章 Intent和Broadcast Receiver 第6章 使用Internet资源 第7章 文件、保存状态和首选项 第8章 数据库和Content Provider 第9章 在后台操作 第10章 扩展用户体验 第11章 高级用户体验 第12章 ...

    《Android应用开发揭秘》源码

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    大话企业级Android应用开发实战[王家林][程序源代码]

    第1话 大话Android  1 智能手机与3g  2 智能手机平台  3 智能手机与手机厂商  4 Android详解  5 Android的盈利方式  6 Android学习之道 第2话 android开发之道  7 搭建开发环境  7.1 准备所需软件 ...

    老罗android开发视频教程全集百度网盘下载

    它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。 Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME...

    Android安卓应用手势锁图案解锁的实现源码

    - 登录成功后,判断是否是第一次登录使用,如果是第一次则显示创建手势密码的界面,要求用户创建手势锁。 - 创建的过程中要求用户连接至少四个点,并且绘制两次以确认绘制正确并记住绘制的路径。确认成功后进入APP...

    Android SQLite--小巧好用的SQLite GUI管理工具

    非常好用的SQLiteSpy 1.8.16 ...刚开始时,该程序创建一个文件SQLiteSpy.db3(1 sqlite3的数据库)来存储的和设置。它不写任何其他文件或注册表。卸载一样只是简单的删除两个文件:应用程序的可执行文件和数据库文件。

    Delphi XE8 iOS与Android移动应用开发(APP开发)[完整中文版]

    第一章 移动应用程序开发(iOS和Android) 17 1. 安装与配置 17 2. 使用基本用户界面控件 18 3. 使用设备功能 20 4. 使用后端服务 21 5. 访问数据库 21 第二章 配置Mac上的开发环境(IOS) 23 2.1 Mac 和 iOS...

    Android课程设计---基于Android系统的音乐播放器设计与实现.doc

    根据Android的软件框图,其软件层次结 构自下而上分为以下几个层次: 第一、操作系统层(OS) 第二、各种库(Libraries)和Android 运行环境(RunTime) 第三、应用程序框架(Application Framework) 第四、应用...

Global site tag (gtag.js) - Google Analytics