android应用开发中的图片缓存系统

来源:互联网 发布:oracle sql调优技巧 编辑:程序博客网 时间:2024/05/17 07:49

此文产生的原因:1.在开发android应用的时候,往往因图片没处理好的原因导致拖延开发效率,并且时常出现OOM.2.如今的android应用是富文本应用,文本,图片,视频,语音等,基本上每个应用都会涉及到这4中的几种或全部.然而在应用中出现最频繁的富文本就是图片.所以处理好图片是非常重要的一个环节.3.好的应用的就是能够给应用很好的用户体验,图片这一环节没处理好直接影响到用户的体验,情节严重的情况下用户直接将app remove,进而导致用户的丢失,结果不堪设想.4.如今关于图片缓存的文章非常多,解决方案也非常多,在百度或其他搜索引擎一搜各种解决方案.这时你可能不能区分最佳的解决方案,此文将带领你来深刻理解图片缓存系统的最佳解决方案,以及实战.

1.缓存系统的局部整体架构:

这张静态类图,只是缓存系统整体架构,其中有些类,没有在这张类图中体现出来,只要能够理解这张图基本上就能够绘制出其他相应的类图.以及类与类之间的关系,下篇博文将进一步更加深入的分析缓存系统,以及如何定制自己的缓存系统.

2.实战

1.使用缓存系统实现从assets下获取图片

a.代码片段:

BitmapUtils bitmapUtils = new BitmapUtils(this);bitmapUtils.display(imageView, "assets/ico.png")

b.效果:


2.从sdcard中获取

a.代码片段:

BitmapUtils bitmapUtils = new BitmapUtils(this);bitmapUtils.display(imageView, Environment.getExternalStorageDirectory()+"/1.jpg")
b.效果:


3.从网络获取

a.代码片段

BitmapUtils bitmapUtils = new BitmapUtils(this);bitmapUtils.display(imageView,"http://192.168.0.101:8080/Chat/2.jpg")
b.效果


4.ListView以及相似控件图片的显示(Gridview等)

a.代码片段

<span style="font-size:18px;"> List<Bmp> bmps = new LinkedList<Bmp>(); for(int i=1;i<=15;i++){ Bmp bmp = new Bmp(); bmp.url = BASE_URL+i+".jpg"; bmp.name = i+".jpg"; bmps.add(bmp); } mAdapter = new BmpAdapter(this, bmps, bitmapUtils); mListView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true)); mListView.setAdapter(mAdapter);</span>

b.效果

总结:

在项目开发中常用来显示图片的控件是ListView,GridView,其中对于刚刚接触android开发的程序员,最头疼的事情就是图片的错位,列表的错位,列表跳动等等问题.此缓存系统就很好的解决上面的所有问题,第一次接触这样的架构可能理解起来比较吃力,这篇博文我也只是对缓存系统做了一些简单的介绍,只讲解了怎么使用,开发者们只要看一下代码片段就能解决项目中的问题,对于缓存系统的内部细节下篇博文将详细讲解。敬请期待...




0 0
原创粉丝点击