Android 来自 url 的毕加索九补丁图像
Android Picasso nine patch image from url
我在将 url 中的九个补丁图像加载到视图中作为视图背景时遇到问题。
我可以从资源中加载 9 个补丁图像,效果很好。
我给毕加索设定的目标如下:
view.setTag(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
Log.d("LOG", bitmap.getWidth() + " " + bitmap.getHeight());
BitmapDrawable bitmapDrawable = new BitmapDrawable(activity.getResources(), bitmap);
byte[] ninePatchChunk = bitmap.getNinePatchChunk();
if (NinePatch.isNinePatchChunk(ninePatchChunk)) {
view.setBackground(new NinePatchDrawable(activity.getResources(), bitmap, ninePatchChunk, new Rect(), null));
} else {
view.setBackground(bitmapDrawable);
}
}
}
此功能(从资产加载图像)工作正常:
Picasso.with(activity)
.load(R.drawable.nine_patch_button)
.into(view.getTag()); //view.getTag() is the target
但是我需要从网上下载背景图片。
Picasso.with(activity)
.load(uri_to_nine_patch_button)
.into(view.getTag()); //view.getTag() is the target
在第二种情况下,图像被拉伸并且没有显示为九块图像。当我从 URI 加载图像时,日志输出将始终相同(41、28),但是当我从资产加载图像时,日志输出因设备而异(108、75 和 38、27)。
在具有相同输出的第一种情况下 bitmap.getNinePatchChunk() 为空,图像被拉伸,没有任何效果。
有什么解决方案吗?
此致
我的解决方案是使用这个 class:https://gist.github.com/knight9999/86bec38071a9e0a781ee
我在将 url 中的九个补丁图像加载到视图中作为视图背景时遇到问题。
我可以从资源中加载 9 个补丁图像,效果很好。
我给毕加索设定的目标如下:
view.setTag(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
Log.d("LOG", bitmap.getWidth() + " " + bitmap.getHeight());
BitmapDrawable bitmapDrawable = new BitmapDrawable(activity.getResources(), bitmap);
byte[] ninePatchChunk = bitmap.getNinePatchChunk();
if (NinePatch.isNinePatchChunk(ninePatchChunk)) {
view.setBackground(new NinePatchDrawable(activity.getResources(), bitmap, ninePatchChunk, new Rect(), null));
} else {
view.setBackground(bitmapDrawable);
}
}
}
此功能(从资产加载图像)工作正常:
Picasso.with(activity)
.load(R.drawable.nine_patch_button)
.into(view.getTag()); //view.getTag() is the target
但是我需要从网上下载背景图片。
Picasso.with(activity)
.load(uri_to_nine_patch_button)
.into(view.getTag()); //view.getTag() is the target
在第二种情况下,图像被拉伸并且没有显示为九块图像。当我从 URI 加载图像时,日志输出将始终相同(41、28),但是当我从资产加载图像时,日志输出因设备而异(108、75 和 38、27)。
在具有相同输出的第一种情况下 bitmap.getNinePatchChunk() 为空,图像被拉伸,没有任何效果。
有什么解决方案吗?
此致
我的解决方案是使用这个 class:https://gist.github.com/knight9999/86bec38071a9e0a781ee