专栏首页cwl_Java速读原著-Android应用开发入门教程(HelloActivity程序的运行)

速读原著-Android应用开发入门教程(HelloActivity程序的运行)

第 4 章 Android应用程序示例

在软件开发的最初阶段,通常使用一个 Hello World 程序作为最简单的示例,本部分介绍一个 Android 中最简单应用程序,通过这部分内容可以了解到 Android 程序的文件结构和编译后的结构。

4.1 HelloActivity程序的运行

HelloActivity 是一个简单的 Android 应用程序,其工程文件名称为 HelloActivity,在 Android 的源代码和SDK 中,都包含了这个包。

HelloActivity 的图标和运行情况如图所示。

这个程序有一个简单的活动(Activity),用于启动一个新的界面,并在界面上显示 “Hello,World!”字符串。

4.2 HelloActivity的源文件结构

HelloActivity 工程的源文件的结构按照目录树的方式如下所示: HelloActivity/ |-- Android.mk (工程管理文件) |-- AndroidManifest.xml (工程描述文件) |-- res (资源文件) | |-- layout | | -- hello_activity.xml (布局文件) |– values | -- strings.xml (字串资源文件) |-- src (Java 源代码文件)– com -- example– android -- helloactivity– HelloActivity.java

HelloActivity 工程中另有一个 tests 目录,其中也具有自己的 Android.mk 和 AndroidManifest.xml 文件,这 是另一个工程,是 HelloActivity 工程的测试程序。

4.2.1.Android.mk文件

Android.mk 文件是 Android 的工程管理文件,这个文件只在源代码开发的时候使用,在 SDK 的开发中不需要使用,它包含在工程的根目录中,其内容如下所示:

Android.mk 文件是 Android 编译过程中通用的工程管理文件,本地程序、本地库和 Java 程序包都使用这个文件。这个文件仅仅在基于源代码开发的情况中使用,在 Java 应用程序工程的管理中,该文件不用定义过多的内容,其中关键的内容是使用 include $(BUILD_PACKAGE)表示从当前目录编译 Java 应用程序包。

LOCAL_PACKAGE_ NAME定义的是这个程序的APK包的名称。LOCAL_MODULE_TAGS表示这个包的类型。这个包的 LOCAL_MODULE_TAGS 定义成了 samples,这将编译 APK 包,但是不安装在系统中。使用不同的值,可以决定是否编译和安装,例如使用 eng,将安装到目标系统中。

最后一行的 include $(call all-makefiles-under,$(LOCAL_PATH)),表示包含本目录的子目录中的 Android.mk文件,本例中也就是 tests 目录中的内容。

4.2.2.AndroidManifest.xml文件

AndroidManifest.xml 文件是这个 Android 应用程序的工程描述文件,包含了宏观上的内容,如下所示:

application(表示应用程序)标签中包含了一个 activity(表示活动)。活动是应用程序中的一个组件,一个应用程序中也可以包含若干个组件。包名定义为 com.example. android.helloactivity ,表示将从 src 目录的com/example/android/helloactivity 中寻找程序中的 Java 源代码。活动名称将被定义为 HelloActivity,表示活动的代码是上述源代码目录中的 HelloActivity.java 文件。intent-filter 中的内容指定了程序的启动方式,这里 category中的 android.intent.category.LAUNCHER 表示活动将在 Android 的桌面(Android 默认的桌面程序名称也是LAUNCHER)上出现。

这里指定 application 的 android:label 为"Hello,Activity!",这和桌面图标下面的文字以及活动启动后上面的标题文字是一致的。本例没有指定图标,所以桌面上的图标使用的是默认图标。在 AndroidManifest.xml 文件中为一个活动指定 label(标签)和 icon(图标)的方法 如下所示:

android:label 指定为字符串、android:icon 指定为图标后,将使用 res/drawable 中对应名称的图片文件作为图标(本例中将使用 icon_name.png)。

activity 和 application 都具有 android:labelandroid:icon 等属性,由于活动是程序的单元,且应用可以包含多个活动,因此程序首先将使用 activity 中的这些标签,如果没有则使用上一级的 application 中标签的定义

4.2.3.源代码文件

HelloActivity 工程只有一个源代码文件 HelloActivity.java ,位于这个工程 src 目录下的com/example/android/helloactivity 中,内容如下所示:

这里的类 HelloActivity 继承实现了 Android 系 统 API 提供的活动类( Activity ),使用setContentView(R.layout.hello_activity) 指定了当前活动的布局,这里表示将从 res/layout 目录中找到hello_activity.xml 文件作为本例的布局文件使用。

4.2.4.布局文件

hello_activity.xml 是本程序中的布局文件,在 Java 源文件中使用了此文件。本文件在 res/layout 目录中,其内容如下所示:

在这个布局文件中,只定义了一个 UI 元素——EditText,就是在界面上出现的占据全屏的可编辑文本框。在这里定义了这个可编辑文本框的初始化字符串为"@string/hello_activity_text_text",这个值在另外的资源文件中被定义,本例就是 string.xml

4.2.5.其他资源文件

string.xml 是本例中的一个资源文件,其内容如下所示:

这里定义了名称为“hello_activity_text_text”的字符串的内容为 Hello,World!,这就是出现在屏幕上的字符串。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 快速学习-RabbitMQ工作模式

    work queues与入门程序相比,多了一个消费端,两个消费端共同消费同一个队列中的消息。

    cwl_java
  • 快速学习-Spring 中的 AOP

    Joinpoint(连接点): 所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点。

    cwl_java
  • 快速学习-RocketMQ消息轨迹

    RocketMQ集群中每一个Broker节点均用于存储Client端收集并发送过来的消息轨迹数据。因此,对于RocketMQ集群中的Broker节点数量并无要求...

    cwl_java
  • Android Studio 实用小技巧

    一般的什么快捷键,技巧的文章也有很多。我也看过很多。下面这些事我在来自国外大神发布的:Android Studio Tips of the Day (https...

    陈宇明
  • 腾讯云服务器 拼起来

    链接: https://cloud.tencent.com/act/group/amd/detail?group=57636

    用户3013987
  • Android 10适配要点,作用域存储

    距离Android 10系统正式发布已经过去大半年左右的时间了,你的应用程序已经对它进行适配了吗?

    用户1158055
  • 韩国网络托管公司Nayana向勒索软件黑客支付100万美元

    据外媒6月12日报道,韩国网络托管公司 Nayana 上周末(6月10日)遭受网络攻击,导致旗下153台Linux 服务器与3,400个网站感染Erebus勒索...

    FB客服
  • 听说mysql还会选错索引

    大家都知道,mysql 一个表中可以创建多个索引,但是在执行一条查询语句的时候,mysql 只能选一个索引,如果我们没有指定 mysql 使用某个索引,那么就是...

    谭小谭
  • 生成逼真3D人偶,居然不用3D形状建模,还能学会你的舞步 | 三星CVPR Oral

    更重要的是,它没有用到3D形状建模 (Explicit 3D Shape Modeling) ,而是依靠2D纹理映射 (2D Texture Map) ,来完成...

    量子位
  • restapi(2)- generic restful CRUD:通用的restful风格数据库表维护工具

    研究关于restapi的初衷是想搞一套通用的平台数据表维护http工具。前面谈过身份验证和使用权限、文件的上传下载,这次来到具体的数据库表维护。我们在这篇...

    用户1150956

扫码关注云+社区

领取腾讯云代金券