获取assets目录下的资源

我们在做android项目时,有时为了管理图片资源的方便性,未必把所有图片都放在res中的子目录,下面的实例是怎么从assets获取图片资源。import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Vector;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import android.content.Context;import android.content.res.AssetManager;import android.content.res.XmlResourceParser;import android.graphics.drawable.Drawable;import android.util.Log;import android.util.Xml;/** * * @Cindigo * * @author * * @since * * @模块及功能 获取Assets目录资源 * **/public class GetAssetsResource {private static final String tag="---GetResource---";private static final boolean DEBUG=true;private Context context;private String[] foldersName=null,filesName=null,imagesName = null; private AssetManager assetManager = null; // Provides access to an application's raw asset files;/assets下的文件不生成IDprivate String filePath="";private int currentImge = 0; private Vector drawables=new Vector();private XmlResourceParser xmlResourceParser;public GetAssetsResource(Context context){this.context=context;this.assetManager=context.getResources().getAssets(); // 取得访问assets目录权限的句柄,Retrieve underlying AssetManager storage for these resources.}public String[] getAllFolder() {try {foldersName=assetManager.list(""); // 列出assets目录下所有文件} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return foldersName;}/** * @功能 获取指定文件夹路径下所有资源名 * @param * @return filesName **/public String[] getFolderFiles(String folderName) {try {filesName=assetManager.list(folderName);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return filesName;}/** * @模块 获取Icon * @功能 获取指定文件夹路径下所有Drawable资源名 * @param * @return drawables **/public Vector getDrawables(String folderPath) {InputStream is=null;String[] folderNames=folderPath.split(File.separator); // "/" 分割字符串if (DEBUG)Log.e(tag,"folderNames.length:"+ folderNames.length);String[] filesName=getFolderFiles(folderNames[folderNames.length-1]);for (int i = 0; i < filesName.length; i++) {try {is=assetManager.open(folderPath+File.separator+filesName[i]); // 访问assets下指定文件} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}drawables.add(Drawable.createFromStream(is, null)); // 把一个路径转换成Drawable对象}return drawables;}/** * @模块 获取包名和类型 * @功能 获取并解析指定文件夹路径下所有Xml资源 * @param * @return packageClass **/public ArrayList getPackClassName(String xmlPath) {ArrayList packageClass=new ArrayList(); InputStream inputStream=null; //获得XmlPullParser解析器 XmlPullParser xmlParser = Xml.newPullParser();try{//得到文件流,并设置编码方式 inputStream=assetManager.open(xmlPath); xmlParser.setInput(inputStream, "utf-8"); //获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。//还没有到XML文档的结尾处while (xmlParser.getEventType() != XmlResourceParser.END_DOCUMENT) {//如果遇到了开始标签if(xmlParser.getEventType() == XmlResourceParser.START_TAG){//获取该标签的标签名String tagName = xmlParser.getName();StringBuilder sb = new StringBuilder("");//如果遇到book标签if(tagName.equals("game")){//根据属性名来获取属性值String packageName = xmlParser.getAttributeValue(0);sb.append(packageName);sb.append(":");//根据属性索引来获取属性值String className = xmlParser.getAttributeValue(1);sb.append(className);sb.append(":");//获取文本节点的值sb.append(xmlParser.nextText());packageClass.add(sb.toString());}}//获取解析器的下一个事件xmlParser.next();}}catch (XmlPullParserException e){// TODO Auto-generated catch blocke.printStackTrace();}catch (IOException e){// TODO Auto-generated catch blocke.printStackTrace();}return packageClass;}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值