android 网络加载大图,android加载网络.9图

最近项目要使用.9图的背景图,这个背景图要读取后台的配置文件。心想这不很简单,直接把图传上去,直接加载就噢了。。。。。

毕竟还是太年轻了,踩坑入下

直接把.9图传到七牛云后,加载的图片是有黑边的,而且不会拉伸。找了一下资料需要对图片做处理

对图片重新输出

使用sdk自带的工具aapt对.9图重新输出

aapt c -v -S point_9 -C point_10

以上的是批量输出的指令。point_9是要转换的.9图的文件夹,point_10是转换输出的文件。在运行指令是point_10要提前创建,不然会报错。详细的aapt指令自行去查找,这里不做详细介绍。

对.9图加载

private Drawable getNinePatchDrawable(Bitmap bitmap, Context context) {

byte[] chunk = bitmap.getNinePatchChunk();

NinePatchDrawable ninePatchDrawable = null;

if (NinePatch.isNinePatchChunk(chunk)) {

ninePatchDrawable = new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null);

} else {

return new BitmapDrawable(context.getResources(), bitmap);

}

return ninePatchDrawable;

}

看到这代码是不是觉得就ok了....

一开始的时候我也觉得是这样了,可惜还是太年轻了

项目中我们使用的是Glide加载图片,直接获取个bitmap传过去就噢了,一顿操作猛如虎

Glide.with(reference.get())

.asBitmap()

.diskCacheStrategy(DiskCacheStrategy.RESOURCE)

.dontAnimate()

.dontTransform()

.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)

.load(url)

.listener(new RequestListener() {

@Override

public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {

return false;

}

@Override

public boolean onResourceReady(Bitmap resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {

//TODO 加载.9图

return true;

}

})

.submit();

用了上面的方法就一路踩坑,怎么加载NinePatch.isNinePatchChunk(chunk)都识别不了.9图

重新输出图片,aapt和放进项目中打包解压获取的图片都不行

人生路漫漫,一坑接着一坑

把输出的图片放到sd卡的文件夹,然后再去加载----激动的心颤抖的手,竟然阔以。。。

那问题来了,什么原因造成的???

原来重新输出的图片,把.9的信息都保存在png的辅助信息了,如果对输出的图片做压缩就会这些信息给去掉

校验的图片上传是没有做压缩的,那问题来了一定是glide对图片进行的压缩处理,哎,没有认真读过glide的源码,填坑之路蛋疼

File file = Glide.with(reference.get())

.load(url)

.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)

.get();

只能把图片下载后再去加载,佛祖保佑这次真的能加载出来了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值