如何在Android中更改SVG图像的颜色。图片是从网络API下载的

时间:2019-06-17 16:08:34

标签: java android svg

我遇到类似问题,例如,我正在从Web API下载图像并成功设置为imageview。我无法更改我下载的svg图像的颜色。 我在.java文件中尝试了xml中的tintColor和setFilterColor(),但对我来说没有任何用。 有什么解决方法吗,请对此帖回复。

public static void loadSvgWithColor(final Context context, String url, final int color, final ImageView target) {
    if (httpClient == null) {
        httpClient = new OkHttpClient.Builder()
                .cache(new Cache(context.getCacheDir(), 5 * 1024 * 1014))
                .build();
    }
    if (!url.equals("")) {
        Request request = new Request.Builder().url(url).build();
        httpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                target.setImageResource(R.drawable.app_icon);
                target.setColorFilter(color);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                InputStream stream = response.body().byteStream();
                Sharp.loadInputStream(stream).into(target);
                stream.close();
                target.setColorFilter(color);
       }
        });
    } else {
        target.setImageResource(R.drawable.app_icon);
        target.setColorFilter(color);
    }
}

2 个答案:

答案 0 :(得分:0)

在收到api时编辑svg文件流,并设置为imageview 通过此样本: without Edit color

Edited color

答案 1 :(得分:0)

您使用的Sharp库会生成一个List并将其放入您的PictureDrawable中。最后我检查了一下,ImageViewandroid:tint方法在PictureDrawables上不起作用。

我可以想到几种解决方案: