在运行时从Android Vector Asset XML创建Drawable

时间:2018-03-15 10:29:23

标签: android firebase android-vectordrawable

我已将所有矢量资源xml文件存储在firebase存储中。现在,我想下载它们并将每个文件添加到ImageButton。但为此,我必须将xml文件转换为drawable文件,但Drawable.createFromXml()Drawable.createFromPath()都不起作用。

使用Drawable.createFromXml()时遇到的问题是我不知道应该输入什么解析器。

是否可以在运行时从xml文件(svg文件)创建drawable,或者你们中的任何一个人都知道更好的方法。

这是目前的代码:

    private void getData(DataSnapshot dataSnapshot){
    HashMap<String,Drawable> testMap = new HashMap<>();

    for (DataSnapshot ds: dataSnapshot.getChildren()){
        testMap.put(ds.getKey().toString(), Drawable.createFromPath(generateXmlFile(ds.getValue().toString())));
    }
}

private String generateXmlFile(String downloadXml){
    StorageReference xmlFile = storageInstance.getReferenceFromUrl(downloadXml);
    try {
        File tmpFile = File.createTempFile( "test","xml");
        xmlFile.getFile(tmpFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {

            }
        });
        return tmpFile.getAbsolutePath();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

0 个答案:

没有答案