购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 应用程序运行分析

2.4.1 AndroidManifest.xml修改

本节仍以HelloAndroid项目为例,对Android应用程序的启动过程和各资源的使用进行简单的介绍与分析。

Android系统启动程序之前,首先查看该程序的AndroidManifest.xml文件,查找一个“主Activity”,即程序启动时默认执行的第一个Activity。这个Activity的节点中声明了<intent-filter>标签,<intent-filter>标签中主要包括<action>和<category>两个子标签。<action>标签中的android:name属性值必须为"android.intent.action.MAIN",<category>标签中的android:name属性值必须为"android.intent.category.LAUNCHER",这两者表示该Activity是Android程序的入口点,作用如同Java程序中的main()方法一样:

<activity android:name=".MainActivity" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

确定了“主Activity”之后,启动该Activity,并执行它的onCreate()方法。Activity的生命周期从onCreate()方法开始,该方法的功能一般是进行布局文件的加载、Activity的初始化等。自此应用程序启动完毕。

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);//加载布局文件

}

了解Android程序的基本构成和启动过程之后,下面以示例的方式继续介绍如何进行基本的项目修改。

【例2-1】 更换应用程序的图标和标题。程序运行前后图标的对比如图2-8 所示,而标题在运行前后的对比如图2-9 所示。

图2-8 图标在运行前后的对比

图2-9 标题在运行前后的对比

分析 打开AndroidManifest.xml 清单文件,application 节点定义了如下属性:

<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher "

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme" >

android:icon用于定义应用的图标,属性值"@mipmap/ic_launcher " 中的@表示引用了mipmap目录下的图片资源文件ic_launcher,只要将ic_launcher的引用改为其他图片的引用,即可更换图标。

android:label用于定义应用的标题,属性值"@string/app_name" 中的@表示引用了字符串资源,资源名称为app_name,只要修改该字符串的定义,即可改变应用的标题。

实现步骤如下:

(1)复制一个图片文件(如 java_coffee.png)到/res/mipmap目录下。复制之前和复制之后mipmap的目录内容对比如图2-10所示。

图2-10 mipmap目录结构

复制之后,该图片会在R.java文件中自动注册(如果R.java文件的内容没有变化,只是说明尚未更新,可编译工程使之更新),只有注册之后程序中才可以引用。R.java文件的前后对比如图2-11和图2-12所示。

图2-11 复制文件之前的R.java文件

图2-12 复制文件之后的R.java文件

(2)修改AndroidManifest.xml清单文件:将 android:icon="@mipmap/ic_launcher"改为android:icon="@mipmap/java_coffee"。

(3)修改strings.xml字符串资源文件:将<string name="app_name">HelloAndroid</string>改为<string name="app_name">Hello</string>。

(4)运行项目,查看效果。

2.4.2 资源文件修改

【例2-2】 修改界面显示内容:将界面上显示的“Hello World!”修改为“Hello Android!!”,同时修改文字的颜色、字号等内容。修改前后的运行结果如图2-13 所示。

图2-13 修改前后的运行结果

分析 修改界面显示内容,就需要修改activity_main.xml 布局文件。该文件定义了一个TextView 控件,它的属性android:text 定义了文本内容。控件代码如下:

<TextView

android:text="Hello World!"

android:layout_width="wrap_content"

android:layout_depth="wrap_content" />

只需要将 android:text="Hello World!"改为android:text="Hello Android!!"即可修改显示内容,而颜色和字号可以通过设置属性textColor和textSize实现。

修改之后的代码如下:

<TextView

android:text="Hello Android!!"

android:textColor="#0xff0000"

android:textSize="30sp"

android:layout_width="wrap_content"

android:layout_depth="wrap_content" />

2.4.3 语言国际化

【例2-3】 实现语言的国际化:当手机的语言设置项改为“简体中文”时,HelloAndroid项目全部改为中文显示。运行效果如图2-14 所示。

图2-14 运行效果图

分析 在Android 工程的res 目录下,通过定义特殊的目录名称就可以实现多语言支持。目录名称为“values-配置选项”,如values-zh-rCN 简体汉语、values-zh-rTW 繁体、values-jp 日语等。

配置选项包括语言代号和地区代号。例如,表示中文和中国的配置选项是 zh-rCN;表示英文和美国的配置选项是en-rUS。zh和en分别表示中文和英文;CN和US分别表示中国和美国;其中的r是必需的。

在每个目录里放置一个strings.xml,strings.xml里是各种语言字符串。如果涉及参数配置类,相关的xml文件夹名称后面也要加上配置选项。这样Android系统语言切换后,应用程序也会跟随实现语言切换。

实现步骤如下:

(1)添加字符串资源:为了实现语言国际化,必须将界面上显示的信息全部都定义为字符串资源,因此修改strings.xml,新定义一个字符串资源show_info。

<resources>

<string name="app_name">Hello</string>

<string name="show_info">Hello Android!!</string>

</resources>

(2)修改布局文件 activity_main.xml :前面的示例中,TextView显示的内容并不是引用字符串资源,而是直接将文字信息定义在属性中。此时,则必须引用字符串资源show_info,因此将android:text的属性值改为"@string/show_info"。

(3)在res下添加一个新的目录,目录名为“values-zh-rCN”。

将工程显示由Android改为Project,具体如图2-15所示。

复制values目录到res中,在复制时,弹出一个提示对话框,如图2-16所示。将名称改为“values-zh-rCN”,其中的zh-rCN代表中文简体。

之后,可以在res目录下查看到新建的目录,如图2-17所示。

(4)修改strings.xml(zh-rCN)内容。

<resources>

<string name="app_name"> 你好</string>

<string name="show_info"> 你好,安卓!!</string>

</resources>

图2-15 切换显示内容

图2-16 修改复制的values目录名称

图2-17 显示新的目录

(5)将模拟器的“语言输入”设置由“美国英语”改为“中国简体”。修改完毕后,再次查看运行结果。 excgnH66jDgku7AQNHtcrzJlTYgKjVG186KnFd77KlaA38gDi3XEHGZ0PNoEKAew

点击中间区域
呼出菜单
上一章
目录
下一章
×