当前位置: 代码迷 >> Android >> android 下载外部资源解析的有关问题
  详细解决方案

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

热度:32   发布时间:2016-04-28 07:14:03.0
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();
                }
  相关解决方案