Android picasso 九补丁图片来自url

标签 android image picasso nine-patch

我在将 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.getNin​​ePatchChunk() 为空,图像被拉伸(stretch),没有任何效果。

有什么解决方案吗?

最好的问候

最佳答案

关于Android picasso 九补丁图片来自url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35203989/

相关文章:

android - 如何将 LayerDrawable 转换为位图?

android - 错误 :Configuration with name 'default' not found

css - 我怎样才能让 img 和文本链接都链接到同一个地方,并且在悬停时都变得活跃,而不管我悬停在哪个地方?

java - 单击箭头键时图片不刷新(keylistener)

android - Picasso 在类路径上检测到不受支持的 OkHttp

java - picasso 图书馆不显示来自 URL 的图像

android - 如何以编程方式获取带有按钮的 View 的高度?

java - 在 Android 中子类化 Activity 时,是否有一种设计模式可以减少代码重复?

iOS 网络上的图像搜索

android - onBitmapLoaded 从未调用过