解决由于异步加载和getview的混用导致图片错位
2016-08-02 00:58
190 查看
最近开发文件浏览列表一块,其中通过接口查询当前目录下的所有文件和文件夹,对于文件夹我们就显示文件夹的一些属性:图像是文件夹,然后可以进入他的下级目录;但对于文件的话我们就需要根据不同的类型,例如图片和视屏格式的图片我们需要展示他们的缩略图,
点击文件的话,也是根据不同类型,可以由不同的系统应用进行打开这个网上的方式有很多。例如:
在这里本人图片和影视的缩略图都是通过在adapter 中通过开源框架的ImagerLoader来实现的。但是在测试过程中,一直随机出现比如文件夹的图片显示的是图片的缩略图,这个明显是由于getview的缓存机制导致了,重用出现了错误,但是归根结底还是由于异步加载的框架导致图片加载不是实时的,可能加载图片的时候这个item所对应的缓存已经有所变动,所以才出现了这种bug。
既然知道了原因我们就需要解决这个问题,怎么来呢。看来异步加载是不能直接用了。那我们就可以换一种思路,预先缓存好对应url的bitMap 然后通过map的形式加入到list 集合中,并且可以保存起来。每次我们拿到url先做缓存,如果这个url在集合中能够查到,那我们就直接吧对应bitmap拿出来直接加载到对应的控件上。这种加载方式就相当于我们平时直接加载资源文件一样,肯定不会出现错位等问题了。
通过URl 获取bitmap 的方式我们其实在ImageLoader 框架中可以找到。有一个ImageLoader.sysImageBitmap(url,options)返回的就是一个bitMap 。
点击文件的话,也是根据不同类型,可以由不同的系统应用进行打开这个网上的方式有很多。例如:
private void openFile(File file){ Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //设置intent的Action属性 intent.setAction(Intent.ACTION_VIEW); //获取文件file的MIME类型 String type = getMIMEType(file); //设置intent的data和Type属性。 intent.setDataAndType(/*uri*/Uri.fromFile(file), type); //跳转 startActivity(intent); //可以加个异常捕捉
在这里本人图片和影视的缩略图都是通过在adapter 中通过开源框架的ImagerLoader来实现的。但是在测试过程中,一直随机出现比如文件夹的图片显示的是图片的缩略图,这个明显是由于getview的缓存机制导致了,重用出现了错误,但是归根结底还是由于异步加载的框架导致图片加载不是实时的,可能加载图片的时候这个item所对应的缓存已经有所变动,所以才出现了这种bug。
既然知道了原因我们就需要解决这个问题,怎么来呢。看来异步加载是不能直接用了。那我们就可以换一种思路,预先缓存好对应url的bitMap 然后通过map的形式加入到list 集合中,并且可以保存起来。每次我们拿到url先做缓存,如果这个url在集合中能够查到,那我们就直接吧对应bitmap拿出来直接加载到对应的控件上。这种加载方式就相当于我们平时直接加载资源文件一样,肯定不会出现错位等问题了。
通过URl 获取bitmap 的方式我们其实在ImageLoader 框架中可以找到。有一个ImageLoader.sysImageBitmap(url,options)返回的就是一个bitMap 。
相关文章推荐
- listView异步加载图片导致图片错位、闪烁、重复的问题的解决
- ListView异步加载图片--图片缓存和错位问题解决方案
- android listview 异步加载图片并防止错位及解决ListView滚动后内容重复的问题
- android中ListView异步加载图片时的图片错位问题解决方案(1)
- ListView异步加载图片--图片缓存和错位问题解决方案
- android开发中解决ListView异步加载图片错位问题
- -------------解决Android ListView中图片异步加载错位问题
- (译文)解决Android ListView中图片异步加载错位问题
- 解决图片异步加载错位
- android中ListView异步加载图片时的图片错位问题解决方案
- ListView异步加载图片--图片缓存和错位问题解决方案
- Android的ListView异步加载图片时,错位、重复、闪烁问题的分析及解决方法
- 解决Android ListView中图片异步加载错位问题(2)
- 有关libgdx异步加载导致图片显示异常的解决
- 使用Volley框架异步加载图片+ListView图片加载错位解决
- android中ListView异步加载图片时的图片错位问题解决方案
- Android开发教程--listview异步加载图片错位问题解决
- android listview 异步加载图片时出现图片错位、刷新问题的简单解决
- 解决Android ListView中图片异步加载错位问题
- 使用Volley框架异步加载图片+ListView图片加载错位解决