文档章节

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
深圳

暂无文章

Android WebView制作简易浏览器

最终效果 先创建一个WebView控件,其他的就是通过线性布局在上方加入网址输入框和两个按钮 <WebView android:id="@+id/act_webview_wv" android:layout_width="ma...

lanyu96
7分钟前
0
0
解决MacOS升级系统Sierra到Mojave后git报错

错误信息 升级MacOS Sierra到Mac Mojave后执行git命令报错: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/......

阿dai
7分钟前
0
0
兄弟连区块链教程以太源码分析CMD深入分析(一)

cmd包分析 cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如 geth包下面的: func init() { // Initialize the...

兄弟连区块链入门教程
9分钟前
0
0
Titan Framework MongoDB深入理解1

在TitanFrameWork框架中,已经集成了MongoDB的各个功能,现在我们对框架内部的一些重要类进行分析与解读。 MongoDBConverter 在Titan框架中,比较重要的一个接口就是MongoDBConverter,它是作...

云季科技
14分钟前
0
0
SpringBoot集成Quartz

SpringBoot集成Quartz 什么是Quartz Quartz is a richly featured, open source job scheduling library that can be integrated within virtually any Java application - from the smalle......

Grittan
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部