文档章节

KJFrameForAndroid网络图片加载使用方法

爱看博客
 爱看博客
发布于 2015/10/22 10:06
字数 1097
阅读 32
收藏 0
欢迎加入我的QQ群: 257053751 ,或关注微信公众号[Android技术分享]小红人版

摘要

好像最近一个月都没有写博客了,正好伴着KJFrameForAndroid 更新v2.14版本,讲解一下其中Bitmap模块的深度用法。
首先介绍一下:KJBitmap是一个帮助Android开发者加载网络图片的类库。使用KJBitmap可以很方便的加载网络图片,而不用考虑对图片缓存以及OOM问题的处理(因为框架都帮你做好了)。

基础用法

最简单的加载方法是kjb.display(view, url); 
其中kjb就是KJBitmap类的对象; 
参数view可以代表任何View,对imageView设置它的src资源,对普通View会设置背景图片;
参数url就是这个图片的网络地址了,这里支持传一个网络地址如 http://www.kymjs.com/logo.png,同样也支持一个SD卡路径比如/storage/sdcard0/logo.png

重载的显示方法

kjb.display(view, url, width, height);
这个方法可以加载指定大小的图片,比如我们有时候需要显示一个非常大的图片,但是手机的屏幕实际上是很小的,如果把整张图片都加载进来,不仅浪费内存而且加载速度很慢(但是消耗的流量是一样的,因为都需要把原图下载到本地) 其实如果是使用的单独加载一个控件是不需要用这个方法的,因为框架会自动获取到当前控件的宽高,并使用控件的宽高作为图片要显示的大小。但是还有一个问题就是如果控件还没有在屏幕上显示就调用加载逻辑,比如在Activity的onCreate()方法中调用display()方法;比如在ListView中调用display()方法;这些时候是获取不到控件的宽高的,框架默认会以当前屏幕大小的一半作为图片的大小加载,而如果你指定了这个大小,则会以指定大小显示。
kjb.display(view, url, loadimage);
很多时候,我们需要在图片加载的过程中先显示一个还没有加载出来的灰色图片,这个时候就可以使用这个方法。这里需要提的就是,KJBitmap非常先进,不会像ImageLoader框架一样造成图片闪烁问题。

使用配置器

网络图片的加载会自动将图片缓存在本地SD卡中,默认路径是/KJLibrary/image,当然,这个路径是你可以修改的。

BitmapConfig config = new BitmapConfig(); config.memoryCacheSize; //设置图片内存缓存空间大小,默认是手机内存的大小 config.diskCacheSize; // 设置图片SD卡缓存空间大小,默认40M config.isDEBUG; //当前是否是调试模式,会打印一些调试log信息 //如下设置会将图片缓存到SD卡根目录的KJBitmap文件夹内的cache文件夹中 BitmapConfig.CACHEPATH = "KJBitmap/cache"; //这个就是我们图片缓存的路径了

最后别忘了,还有最重要的一步就是应用你的设置。
KJBitmap kjb = KJBitmap.create(config);

自定义图片显示过程

在加载图片的过程中,还可以给一些酷炫的效果。比如让这张图片显示过程中添加一个动画,让图片从中心显示逐渐放大显示出来;比如让图片渐变,从模糊到清晰的显示;亦或者让图片显示时先显示一个环形进度条,等图片加载完成后再显示图片。这些自定义效果完全可行,你只需要在display()之前调用kjb.setCallback传入你的自定义加载过程就行了:

kjbitmap.setCallback(new BitmapCallBack() { @Override public void onPreLoad(View view) { super.onPreLoad(view); bar.setVisibility(View.VISIBLE); } @Override public void onFinish(View view) { super.onFinish(view); bar.setVisibility(View.GONE); } @Override public void onFailure(Exception arg0) { Viewinjext.toast(R.string.tip_load_image_faile); } }); kjbitmap.display(vh.image, url);

远不止这些

作为一个灵活的开放式框架,KJBitmap能做的当然不止这些,还支持:
//保存一张网络图片到本地
public void saveImage(String url, String path);
//对本地缓存的读写(包括删除)
public Bitmap getBitmapFromCache(String key);
public void removeCache(String key);
public void removeCacheAll();

更多的用法期待大家去发现,在使用过程中如果有不明白的函数方法,可以参考API文档


版权声明:本文原创,转载请注明来自 http://kymjs.com/

本文转载自:http://blog.csdn.net/kymjs/article/details/44648379

共有 人打赏支持
爱看博客
粉丝 5
博文 103
码字总数 23887
作品 0
深圳
私信 提问

暂无文章

ubuntu美化记,-修改皮肤,安装工具。

事情由来 最近系统盘坏了,换了新SSD,也换了新版的ubuntu 18.04LTS;不得不说,ubuntu 的桌面搞的越来越漂亮了。 把调整过的zsh shell样式,截个图上来镇一下楼: 添加了对python virtuale...

janl
13分钟前
0
0
阿里云物联网边缘计算加载MQTT驱动

写在前面 本文在LinkEdge快速入门样例驱动的基础上,加载了MQTT订阅的客户端,使得边缘端容器可以通过MQTT获得外部数据。 1. 系统需求 物联网边缘计算平台,又名Link IoT Edge[1]。在物联网边...

阿里云云栖社区
14分钟前
0
0
错误: 找不到或无法加载主类

在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译; 尝试:菜单---》Build---》Rebuild Pro...

安小乐
30分钟前
2
0
vue路由传参,刷新页面,引发的bug

最近遇到一个bug 通过vue路由跳转到页面, 然后接参控制(v-if ),成功显示 而刷新页面,显示失败。 苦苦地找了半天原因,打印参数发现正确,再打印下类型......,路由跳过来会保持传参时的...

hanbb
30分钟前
3
0
【58沈剑 架构师之路】InnoDB,select为啥会阻塞insert?

MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。 但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。 InnoDB的细粒度锁,是实现在索引记录上的。 一,Inn...

张锦飞
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部