读书人

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

发布时间: 2013-12-04 17:21:01 作者: rapoo

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没有问题,照搬你的代码,解析外面的文件会有异常,返回空

哪句代码返回空?

读书人网 >Android

热点推荐