我需要将App图标加载到图像视图中。在列表视图中加载它太慢了。
我试图用Picasso或Glide加载它。
我无法找到如何使用任何这些库将Drawable对象(NOT FROM RESOURCES)加载到图像视图中?
获取drawable的功能:
public Drawable getIcon() {
if (icon == null) {
icon = getResolveInfo().loadIcon(ctx.getPackageManager());
}
return icon;
}
答案 0 :(得分:1)
你可以这样做
Drawable icon = ....
Bitmap bitmap = ((BitmapDrawable) icon).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bitmapdata = stream.toByteArray();
Glide.with(context)
.load(bitmapdata)
.into(imageView);
但我不确定在这种情况下Glide(或Picasso)将使用缓存。
答案 1 :(得分:0)
您可以为毕加索创建自己的RequestHandler
。有一个教程here。
例如,
class AppIconRequestHandler extends RequestHandler {
@Override
public boolean canHandleRequest(Request data) {
return true; // or do validation here
}
@Override
public Result load(Request request, int networkPolicy) {
// Not sure if DISK or correct or if it should be something else, but it works for me.
return new Result(yourApp.getIcon().bitmap, Picasso.LoadedFrom.DISK);
}
}
// When you want to show the icon
Picasso picasso = Picasso.Builder(context)
.addRequestHandler(new AppIconRequestHandler())
.build()
picasso.load(packageName)
.placeholder(placeholderIcon)
.into(imageView)
顺便说一下,别忘了缩放app图标!你不能依赖它们成为小图像,你最终可能会使用比你需要的更多的ram。
答案 2 :(得分:-3)
这是使用Picasso
库。
String url = "some url to your image";
ImageView thumbnail = (ImageView) findViewById(R.id.thumbnail);
Picasso.with(context).load(url).into(thumbnail);