首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 下载外部资源解析的有关问题

2013-12-04 
android 下载外部资源解析的问题如下的xml处于资源res目录下 可以自动编译通过id引用。但如果该文档是从外

android 下载外部资源解析的问题
如下的xml处于资源res目录下 可以自动编译通过id引用。但如果该文档是从外部下载存到存储卡,要怎么解析为一个drawable类。
请大牛们指教

下面是个button的背景xml设置

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"> <!-- 定义当button 处于pressed 状态时的形态。 -->
<shape>
            <solid android:color="#cc2222" />

            <stroke android:width="1dp" android:color="#00000000" />

            <corners android:radius="8dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item android:state_enabled="false"> <!-- 定义当button disable时的形态 -->
<shape>
            <solid android:color="#aa0000" />

            <stroke android:width="2dp" android:color="#80808080" />

            <corners android:radius="8dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item> <!-- 定义形态 -->
<shape>
            <gradient android:angle="-90" android:endColor="#730201" android:startColor="#C4120E" />

            <stroke android:width="1dp" android:color="#00000000" />

            <corners android:radius="5dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>

</selector>

[解决办法]
android byte转换成drawble,首先把xml拷贝到data/data/package下在用byte 转换成drawable就可以了
[解决办法]
楼主用Drawable的静态方法createFromXml()试试:
public static Drawable createFromXml (Resources r, XmlPullParser parser)

以下是简单的例子代码,原理就是把xml文件读取出来到FileReader对象中,然后再作为XmlPullParser对象的输入流即可。
 
XmlPullParser xmlParser = null;
        File file = new File("your storage xml file path");

        FileReader fileReader = null;
        try {
            fileReader = new FileReader(file);
            xmlParser = Xml.newPullParser();
            xmlParser.setInput(fileReader);
            Drawable drawable = Drawable.createFromXml(getResources(), xmlParser);
         
        } catch (FileNotFoundException e) {
          
        } catch (Exception e) {
            
        } finally {
            try {
                if (fileReader != null) {
                    fileReader.close();
                }


            } catch (IOException e) {
            }
        }


[解决办法]
引用:
Quote: 引用:

楼主用Drawable的静态方法createFromXml()试试:
public static Drawable createFromXml (Resources r, XmlPullParser parser)

以下是简单的例子代码,原理就是把xml文件读取出来到FileReader对象中,然后再作为XmlPullParser对象的输入流即可。
 
XmlPullParser xmlParser = null;
        File file = new File("your storage xml file path");

        FileReader fileReader = null;
        try {
            fileReader = new FileReader(file);
            xmlParser = Xml.newPullParser();
            xmlParser.setInput(fileReader);
            Drawable drawable = Drawable.createFromXml(getResources(), xmlParser);
         
        } catch (FileNotFoundException e) {
          
        } catch (Exception e) {
            
        } finally {
            try {
                if (fileReader != null) {
                    fileReader.close();
                }
            } catch (IOException e) {
            }
        }
  Drawable.createFromXml方法应该是用于内部xml,使用res中的drawable id没有问题,照搬你的代码,解析外面的文件会有异常,返回空

哪句代码返回空?

热点排行