gpt4 book ai didi

android - 如何为 ImageView 加载的 SVG 图像设置色调颜色

转载 作者:搜寻专家 更新时间:2023-11-01 08:26:58 27 4
gpt4 key购买 nike

我尝试将可绘制的 PNG 图像加载到 ImageView 中,并使用以下代码为此 ImageView 设置色调 ⇒ 它正在工作:

imageView1.setImageResource(R.drawable.pngFile);
imageView1.setColorFilter(getResources().getColor(R.color.colorAccent), android.graphics.PorterDuff.Mode.MULTIPLY);

我想使用 Glide 将 SVG 图像加载到 ImageView 并为其设置色调颜色。但是在将 SVG 图像成功加载到 imageView 后,setColorFilter NOT WORKING

我可以使用以下代码使用 Glide 将 SVG 图像加载到另一个 ImageView 中:

// Setup RequestBuilder
requestBuilder = Glide.with(mActivity)
.using(Glide.buildStreamModelLoader(Uri.class, mActivity),
InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
.sourceEncoder(new StreamEncoder())
.cacheDecoder(new FileToStreamDecoder<SVG>(new SvgDecoder()))
.decoder(new SvgDecoder())
.placeholder(R.drawable.ic_facebook)
.error(R.drawable.ic_web)
.animate(android.R.anim.fade_in)
.listener(new SvgSoftwareLayerSetter<Uri>());

// Use RequestBuilder with uri
Uri uri = Uri.parse("http://upload.wikimedia.org/wikipedia/commons/e/e8/Svg_example3.svg");
requestBuilder
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.load(uri)
.into(imageView2);

现在,我想更改 mageView2 的色调(在将 SVG 图像成功加载到 imageView2 之后),我尝试了以下代码,但它不起作用:

imageView2.setColorFilter(getResources().getColor(R.color.colorAccent), android.graphics.PorterDuff.Mode.MULTIPLY);

最佳答案

如何通过 Glide 下载 SVG 的完整指南:

1) 在您的 gradle 文件中包含这些库:

实现“com.github.bumptech.glide:glide:$glideVersion”
kapt "com.github.bumptech.glide:compiler:$glideVersion"
实现 'com.caverock:androidsvg-aar:1.4

2) 从 Glide SVG sampler. 下载文件

3) 修改SvgDrawableTranscoder将 PictureDrawable 转换为 BitmapDrawable 的类,因为 PictureDrawable 无法应用滤色器:

public class SvgDrawableTranscoder implements ResourceTranscoder<SVG, Drawable> {
@Nullable
@Override
public Resource<Drawable> transcode(
@NonNull Resource<SVG> toTranscode, @NonNull Options options) {
SVG svg = toTranscode.get();
Picture picture = svg.renderToPicture();
PictureDrawable drawable = new PictureDrawable(picture);

Bitmap returnedBitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
canvas.drawPicture(drawable.getPicture());
Drawable d = new BitmapDrawable(PlatformApp.Companion.getInstance().getResources(), returnedBitmap);
return new SimpleResource<>(d);
}
}

关于android - 如何为 ImageView 加载的 SVG 图像设置色调颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43972575/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com