原始XML文件如何引用Android项目中的其他资源
2014-05-07 22:26
1536 查看
近期一个移动端小游戏项目中有这样的需求:游戏中有多个角色,分别包含多个属性。而这些属性中有部分并非直接的数值,而是指向项目内的其他图片或声音等资源。
这些角色全部通过一个原始XML资源文件来记录。该文件经简化处理如下(playerinfo.xml):
上述属性中,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(); }
相关文章推荐
- 如何把多个android project打包成一个apk(你的项目如何引用其他项目)
- 如何引用android系统公开(非公开)的资源文件,包括字符串,layout,color,等等
- Android 如何找出项目中无用多余的资源
- android 项目打包jar,可引用res,assets里面的资源
- android 项目引用另外一个库项目,如何导入该库项目
- Android 如何引用com.android.internal.R目录下的资源
- Android 如何在工程中引用第三方项目
- Android在XML文件中或者java程序中引用资源的方法
- Web项目如何引用其他java项目
- Android 将Android项目打包成aar文件并在其他项目中引用,打包成jar包
- 如何在Android studio中,给android 项目添加外部lib引用。
- Eclipse 下如何引用另一个项目的资源文件
- Eclipse 下如何引用另一个项目的资源文件
- Android项目中引用到其他工程
- Android 如何引用库工程Library的资源
- Android中引用其他程序的文本资源超简单方法
- 一个项目如何引用其他项目中的类
- 如何将Android项目(此Android项目也包含其他jar包)以jar包的形式整合到核心项目中去
- jsp页面如何引用项目其他文件夹里的css、js文件
- 【Android】eclipse 引用其他项目时老引入失败