1

我正在尝试使用 Glide 从 URL 获取 SVG 资源,但我不知道如何获取 Bitmap 对象而不是将其加载到 View 中。
原因是我需要在 Widget 上加载一些 SVG 文件。

我用了这个例子:https ://stackoverflow.com/a/30938082/3346625

更新 1: 设置 GenericRequestBuilder

            final RemoteViews fViews = views;
            final int fViewId = viewId;

            Runnable myRunnable = new Runnable() {
                @Override
                public void run() {

                    GenericRequestBuilder<Uri, InputStream, SVG, Bitmap> requestBuilder;

                    requestBuilder = Glide.with(mContext)
                            .using(Glide.buildStreamModelLoader(Uri.class, mContext), InputStream.class)
                            .from(Uri.class)
                            .as(SVG.class)
                            .transcode(new SvgBitmapTranscoder(), Bitmap.class)
                            .sourceEncoder(new StreamEncoder())
                            .cacheDecoder(new FileToStreamDecoder<SVG>(new SvgDecoder()))
                            .decoder(new SvgDecoder())
                            .placeholder(R.drawable.ic_launcher)
                            .error(R.drawable.no_icon)
                            .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                            .load(Uri.parse(url));

                    requestBuilder.into(new SimpleTarget<Bitmap>() {
                                @Override
                                public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                                    fViews.setImageViewBitmap(fViewId, resource);
                                }
                            });
                }
            };
            mainHandler.post(myRunnable);
  • 我不得不使用 Runnable,因为 requestBuilder.into 需要在主线程上运行。

我怎样才能获得一个位图,以便以后将它与 RemoteView 一起使用?

4

1 回答 1

1

尝试这个:

.transcode(new SvgBitmapTranscoder(), Bitmap.class)

.into(new SimpleTarget<Bitmap>(sizeW, sizeH) {
    @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
        // update RemoteViews with resource
    }
})

SvgBitmapTranscoder如果有svg.renderToBitmap()方法,应该是相当微不足道的。

于 2015-10-01T15:47:32.913 回答