我在将 9-patch 图像从 url 加载到 View 作为 View 背景时遇到问题。
我可以从工作正常的资源中加载 9-patch 图像。
我为 Picasso 设定的目标如下:
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);
}
}
}
此功能(从 Assets 加载图像)工作正常:
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
在第二种情况下,图像被拉伸(stretch)而不显示为九 block 图像。当我从 URI 加载图像时,日志输出将始终相同(41、28),但是当我从 Assets 加载图像时,日志输出因设备而异(108、75 和 38、27)。
在具有相同输出的第一种情况下,bitmap.getNinePatchChunk() 为空,图像被拉伸(stretch),没有任何效果。
有什么解决方案吗?
最好的问候
最佳答案
关于Android picasso 九补丁图片来自url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35203989/