首页 > 解决方案 > 如何从 HTTP 响应在 Android 中创建 SVG 资产?

问题描述

我有一个 REST 端点,它返回一个 JSON 响应。其中一个键保存 SVG 格式的图像信息。如何解析此信息并将此 SVG 作为矢量资产存储在 android drawables 中。保存后,我想重用它以在我的屏幕上呈现以备将来使用。

示例代码:

Call < BarnPlan > getBarnPlan = client.getBarnPlan(token, barnIdList.get(0));
getBarnPlan.enqueue(new Callback < BarnPlan > () {
 @Override
 public void onResponse(@NonNull Call < BarnPlan > call,
  @NonNull Response < BarnPlan > response) {
  int responseCode = response.code();

  switch (responseCode) {
   case 200:
    if (response.body() != null) {

    }
  }
 }

 @Override
 public void onFailure(@NonNull Call < BarnPlan > call,
  @NonNull Throwable t) {

 }
});

JSON响应:

{
"statusCode": 200,
"success": true,
"statusMessage": "Ok",
"value": "<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="89.444817mm" height="154.33426mm" viewBox="0 0 89.444817 154.33426" version="1.1" id="svg7936" sodipodi:docname="Büro.svg" inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> <defs id="defs2" /> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity "
}

Pojo 类 BarnPlan 包含我想要转换为矢量资产的字符串形式的 xml(SVG) 响应。

标签: android

解决方案


推荐阅读