原始XML文件如何引用Android项目中的其他资源
来源:互联网 发布:谭光树淘宝是真的? 编辑:程序博客网 时间:2024/05/17 05:01
近期一个移动端小游戏项目中有这样的需求:游戏中有多个角色,分别包含多个属性。而这些属性中有部分并非直接的数值,而是指向项目内的其他图片或声音等资源。
上述属性中,id 和 rank 都是数值,而 head 指向的是项目中的图片资源。
起初我想当然地应用 XmlResourceParser 提供的方法 getAttributeIntValue() 读取各个属性,后来发现图片资源却怎么也取不出来。
仔细查看 XmlResourceParser 提供的方法中,有一个名称为:getAttributeResourceValue(),呵呵,顾名思义即为“获取属性资源的值”。替换之,成功通过!
以下是 Java 代码按角色ID引用其各参数属性的过程:
这些角色全部通过一个原始XML资源文件来记录。该文件经简化处理如下(playerinfo.xml):
<?xml version="1.0" encoding="utf-8"?><roles> <role id="0" rank="10" head="@drawable/head01">角色A</role> <role id="1" rank="30" head="@drawable/head02">角色B</role> <role id="2" rank="50" head="@drawable/head03">角色C</role> </roles>
上述属性中,id 和 rank 都是数值,而 head 指向的是项目中的图片资源。
起初我想当然地应用 XmlResourceParser 提供的方法 getAttributeIntValue() 读取各个属性,后来发现图片资源却怎么也取不出来。
仔细查看 XmlResourceParser 提供的方法中,有一个名称为:getAttributeResourceValue(),呵呵,顾名思义即为“获取属性资源的值”。替换之,成功通过!
以下是 Java 代码按角色ID引用其各参数属性的过程:
//从XML文件读取相应nID的数据并初始化人物信息XmlResourceParser xrp = context.getResources().getXml(R.xml.playerinfo);try {readXmlTag:while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {if(xrp.getEventType() == XmlResourceParser.START_TAG){String tagName = xrp.getName();if(tagName.equals("role")){ //对节点名为 role 的项开始按 index 读取int nId = xrp.getAttributeIntValue(0, 0);if (nId == nID) { //nID为指定的ID号intRank = xrp.getAttributeIntValue(1, 50);//注意下面取资源值时所用的方法imgHead = xrp.getAttributeResourceValue(2, R.drawable.head01);strName = xrp.nextText();break readXmlTag;}}}xrp.next();}} catch (XmlPullParserException e) {e.printStackTrace();} catch (IOException e){e.printStackTrace();}
0 0
- 原始XML文件如何引用Android项目中的其他资源
- Android---原始XML资源
- 引用其他项目中的头文件
- Android 使用原始XML资源
- Android 使用原始xml资源
- Android引用XML中的arrays 资源
- Android 加载其他Apk中的资源文件
- 一个项目如何引用其他项目中的类
- android中的资源,资源与xml文件
- 如何在pom文件引用其他项目作为JAR包
- Android读取资源文件——读取原始Xml内容和使用Menu文件
- java如何找到项目中的资源文件
- Android工程引用其他项目
- Android中的资源引用
- 如何在Flex2项目中引用RSL中的嵌入资源
- Eclipse 下如何引用另一个项目的资源文件
- Android XML文件中引用资源的方法
- android Xml文件引用资源中@和?的区别
- 学习笔记1.1 AAA服务器及协议
- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
- 9.1复数类中的运算符重载
- android基本概念文章
- 用CSS完美解决水平居中和垂直居中的方法
- 原始XML文件如何引用Android项目中的其他资源
- Android应用开发之ViewPager
- centos下安装eclipse
- java 模式一
- 自己
- HDU 1011 Starship Troopers(树形dp)
- IOS CoreText.framework --- 基本用法
- Linux 中断实现
- vim的常用命令