/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:访问标识符号的含义及其使用
* 作 者: 雷恒鑫
* 完成日期: 2012 年 08 月 5 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
①首先来谈一下android:id的属性:
先看一下代码(想看源代码请点击这里...):<EditText android:id="@+id/height"
/>
“@”符号是提示XML解析器应该把后面的字符串解析成标识符号。
“+”符号代表将添加一个标识符号。
“id/”表示这个标志符号会被归类在“id”下面。
“height”是这个界面组件的"android:id"。在以后的程序中,会使用“R.id.height”来取得这个界面的组件。
"@+id/height"的意思是我们在此创建了名为“height”的标识符,可以通过这个标识符来控制所对应的界面组件。
“R”类会自动配置一个地址给这个界面的组件。
“R”类的内容,可以通过查看“R.java”文件可知。
②然后再说一下XML说明文件与R.java资源文件:
在Android系统中,使用XML来定义显示界面(UI),虽然用XML来描述界面固然方便,但是对于手机程序来说直接用XML文件太占内存空间了 ,所以“Android”系统并不直接使用XML文件,而是通过“Android开发工具”自动将XML说明文件转换成资源文件。一旦应用程序要使用某个界面或是任何类的资源(字符串、图片、图标、音效...…),都使用索引来查询。
当我们创建好一个“BMI”新项目,尚未作出任何修改时,打开位于“gen/com/demo/android/bmi”目录下的“R.java”文件,可以看到如下代码:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.demo.android.bmi;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
在照着前一章的说明添加了几条XML说明后,在此打开位于“gen/com/demo/android/bmi”目录下的“R.java”文件,可以看到如下代码:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.demo.android.bmi;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int height=0x7f050000;
public static final int result=0x7f050003;
public static final int submit=0x7f050002;
public static final int suggest=0x7f050004;
public static final int weight=0x7f050001;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
我们看到在“R.java”文件中,分别有“attr”(属性)、“drawable”(图片、图标)、“id”(标识符号)、“layout”(界面布局)、“string”(字符串)这几种资源类型。就XML说明文件中的“id”来说,开发工具会根据XML说明文件中指定的“id”,生成对应的资源,并自动指定一个地址。
③将字符串抽离XML
当我们在“res”文件夹中添加一个XML文件,或是一张图片时,“Android开发工具”扩展包会从“res”文件夹中搜集各种资源文件,并将各种资源文件汇总成一个索引,自动生成“R.java”文件。
通过这个特性,可以进一步加工我们的XML说明文件,将其中的文字描述部分抽取出来,让界面更容易维护。
打开“res/values/strings.xml”文件,原始内容为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Bmi!</string>
<string name="app_name">BIM</string>
</resources>
里面定义了“hello”、“app_name”两个字符串,“hello”字符串解答在前一篇博文里,只要在“android:text”中添加神秘的“@string/hello”参数,屏幕中就能显示出“Hello Word Bmi!”。
其中“app_name”字符串用来表示应用程序。
我们看到表示字符串的格式为: <string name="标识代号">文字描述</string>
我们将上一篇博文中的说明抽取出来,添加进“strings.xml”文件中。
完整的“strings.xml”文件如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">BIM</string>
<string name="height">身高(cm)</string>
<string name="weight">体重(kg)</string>
<string name="bmi_btn">计算 BMI 值</string>
<string name="bmi_result">你的 BIM 值是</string>
</resources>
“strings.xml”文件中,我们在原本的“app_name”字符串外,自行定义了另外几个字符串。如果再次打开“R.java”文件,我们会发现文件里的“string”类中,也自动索引了上面定义好的字符串:
public static final class string {
public static final int app_name=0x7f040000;
public static final int bmi_btn=0x7f040003;
public static final int bmi_result=0x7f040004;
public static final int height=0x7f040001;
public static final int weight=0x7f040002;
}
接着我们把这些字符串应用到之前定义好的XML说明文件中,通过使用 @string/[标识符号]
这样访问“string”类的格式,来替换“main.xml”文件中原本的文字说明。
完整的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/height"
/>
<EditText android:id="@+id/height"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numeric="integer"
android:text=""
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/weight"
/>
<EditText android:id="@+id/weight"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numeric="integer"
android:text=""
/>
<Button android:id="@+id/submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/bmi_btn"
/>
<TextView android:id="@+id/suggest"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>
运行结果:
这个界面和前几篇博文的界面完全相同。就界面而言,将说明字符串统一集中在“strings.xml”说明文件之后,以后要修改界面时,就更加有弹性了。
至此,已经完成了“BMI应用程序”负责“显示”(View)的部分。
④新增XML文件:
在上面的代码中只修改到开发工具帮我们产生的文件,而事实上,所有在“res”目录中所做的修改,开发工具都会自动收索,将之添加到“R.java”中。因此也可以在“src/values”中创建自己的独立文字说明文件。
下面就在“src/values”目录中新创建一个“advice.xml”文件,文件里面将包含“BMI程序”算出“BMI值”后将给予的建议文字。完整的文件如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="advice_light">你该多吃点</string>
<string name="advice_average">体型很棒哦</string>
<string name="advice_heavy">你该节食了</string>
</resources>
编辑好上面的文件后,再次打开“R.java”文件,会发现 "advice_light" "advice_average" "advice_heavy" 也已经添加进”R.java“文件的索引中,以供程序调用。
下一篇博文将开始写“Android程序流程”部分。
分享到:
相关推荐
葛兰岱尔模型格式转换器支持导入的3D/BIM/GIS软件或模型格式包括: ...将3D/BIM构件ID输出到转换格式(fbx、gltf/glb、3dtiles、obj)几何数据中,并实现与输出为DB数据文件的3D/BIM源模型结构/属性数据一一对应。
从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf从-BIM-到-CIM.pdf
BIM体质指数计算器,使用IDEA软件、Java语言编写的程序。
Revit 是Autodesk 公司开发的一款基于BIM(Building Information Modeling)的建筑信息模型设计软件,广泛应用于建筑、工程、建设等行业。今天,我们将为您提供 Revit 软件包下载指南,包括 Revit 2012 到 Revit ...
用threejs展示三维bim模型
项目中采用的BIMsufer浏览需要获取BIMserver中会话token、工程的poid; 项目为maven,请自个加载包即可; 项目为分布式,所以有依赖pagehelper、ods-common,自己修改删除即可; 另外注意bimserverclientlib必须支持...
BMI指数计算器 输入身高体重计算BMI指数,根据中国人体质判断健康状况!
EPESI BIM(业务信息管理器)是一个功能齐全的Web CRM / ERP应用程序,用于存储,组织,访问和共享业务记录。 精确,灵活,轻松地管理数据,简化内部通信并提高工作流程的效率。 设置EPESI Web应用服务器-有关如何...
迈入BIM 2.0时代 --- 工程建设行业BIM发展的新趋势
bimserver:1.5.162 BIMserver版本1.5.138 docker pull asti / bimserver:1.5.138运行服务器: BIMserver 1.5.138 docker run -it -e JAVA_OPTS='-Xmx4g' --name bimserver -p 8080:8080 asti/bimserver:1.5.138BIM...
Android实现体重指数BMI的计算,为初学者提供简单样例
5:信息编辑:有自己可编辑的身高数据,体重数据,BIM指数 6:发现模块:上面有一些关于健身的文章; 7:个人信息:用户登录之后可以查看用户的基本资料以及对密码和头像信息进行修改 后台服务端: 1:用户管理:...
BIM信息化综合管理运营平台、BIM模型、智慧工地、3d模型、工单管理、建设建筑、工单信息、设备管理、设备台账、运维标准、巡检管理、巡检计划、巡检任务、维保管理、能耗管理、文档管理、工作日报、html、js、css ...
内含Bimserver1.5.88完整可运行jar文件,及源码文件。
★☆★“人生苦短,我看原版”系列 ★☆★ 这是BIM行业的经典书的英文原版,豆瓣上有相关介绍: https://book.douban.com/subject/26860722/
BIMserver-1.5.182.zip
教育科研-学习工具-一种BIM管理教学用黑板.zip
精品BIM课程-02-计算机建模.pdf
github上下载下来的war包,由于检测网络状态,是通过访问google来检测,所以国内安装过程,一直提示网络有问题,无法完成安装。改问题已做了修复。同时添加了对cesuim的支持