网络加载图片有很多框架,使用简单,避免开发者走弯路。这里我使用的是picasso框架,这里简单介绍下:
picasso是Square公司开源的一个图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。
因为我项目中需要把网络图片变成bitmap,所有我这里就说一下我使用picasso时,遇到的一些问题,与最后怎么解决的方法。
picasso这个框架有提供2个方法,可以时网络图片变成bitmap形式。
一:
Bitmap bitmap=Picasso.with(GalleryActivity.this).load(data.get(i)).get();这个方法是可以使用的,它的源码我也去查看过,返回的是Bitmap类型。但是你使用它会报错,我在网上百度,google寻求了一些帮助,但是还是没有知道它到底为什么出问题。因为时间有点紧,我没有去继续深究,就马上找到了第二种方法。
二:
这个方法只适用于小于1M的网络图片,大于1M的图片就无法显示。最开始我以为是picasso缓冲出现问题,不能超过1M,所有我在 picasso后面添加了
.tag(context).memoryPolicy(MemoryPolicy.NO_STORE,MemoryPolicy.NO_CACHE).fit().config(Bitmap.Config.RGB_565)这些代码的意义,你们可以去百度下picasso框架了解下,这里就不做详细说明,这些代码大概的意思是,不缓冲在手机内,不透明图片可以加快显示之类的,其实说了这么多,这些其实是picasso的图片优化处理。
这些代码写上去,我重新运行app,错误依然存在,无法去解决。只能把图片更改小掉才能正在使用,就是把大小缩小到1M以内,它的bitmap才能正在显示图片(这是一些网友的解释,我没有去验证,通过一些资料查询上来看,还是蛮可靠的)。
三:
这个方法,我亲自测试是可以使用的。
它是直接把网络图片通过inputstream读取出来,再用bitmap形式显示,访问比较快捷.
由于代码简单,我也不太去细说了,看代码就ok,这个也是我找了蛮久才发现的方法。虽然不是用picasso框架来实现,但是我们不能总是依赖框架钻牛角尖,picasso框架很强大,但是也有它弱点的存在,不可能什么都完美的解决我们的要求。我们要用其长度就ok了。