【发布时间】:2015-05-23 15:06:52
【问题描述】:
在我的 Android 应用程序中,我从我的网站下载文本内容并将其存储在我的 mysql 数据库中。现在我想从同一个网站下载和缓存图像。使用AndroidVolley的<com.android.volley.toolbox.NetworkImageView,下载普通图片效果不错。但我想下载 SVG 矢量图像,将它们缓存并显示在我的应用程序中。到目前为止,这在 Android Volley 中是不可能的......
我已经尝试使用 AndroidVolley 作为字符串下载 SVG,然后将它们放入 svg-android 元素 (See here),但 svg-android 从未显示我的图像。看来,它无法显示由 Inkscape 创建的 SVG...
有谁知道一种简单的方法,如何下载这些文件并在视图中显示它们?
谢谢
// 2015 年 3 月 27 日更新 //
所以这是我的解决方案:
使用 Android Volley,我设置了一个 StringRequest 以将我的 SVG-Image 作为字符串访问。 AndroidSVG 库(不要与 svg-android 库混淆)可以将此 String 转换为 SVG-Object 并将其放入 SVGImageView-View 中。这是一个示例代码,它是如何工作的:
StringRequest stringRequest = new StringRequest("http://******/image.svg",new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
SVG svg = SVG.getFromString(response);
View view = getView();
if(view != null){
SVGImageView target = (SVGImageView)view.findViewById(catID);
target.setSVG(svg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(Globals.TAG,"Fehler "+error);
}
});
RequestQueue queue = Volley.newRequestQueue(mContext);
stringRequest.setShouldCache(true);
queue.add(stringRequest);
非常感谢!
【问题讨论】:
-
你看到我的回答了吗?
-
好的,谢谢。这个周末我会试试你的答案;-)
-
我刚刚尝试了第一个建议,但我永远看不到图像......这样,我得到了几个 Logcat-Entries,告诉我 svg 中有无法显示的节点.也许 Inkscape 生成的 SVG 会出现问题......我稍后会寻找这个并告诉你结果;)
标签: android android-volley networkimageview svg-android androidsvg