摘要

本文原创,转载请注明地址:http://kymjs.com/code/2015/03/25/01

摘要

好像最近一个月都没有写博客了,正好伴着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 = new KJBitmap(config);

自定义图片显示过程

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

kjbitmap.display(vh.image, url, 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能做的当然不止这些,还支持:
//保存一张网络图片到本地
public void saveImage(String url, String path);
//对本地缓存的读写(包括删除)
public Bitmap getBitmapFromCache(String key);
public void removeCache(String key);
public void removeCacheAll();

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

KJBitmap使用方法的更多相关文章

  1. KJBitmap与KJHttp的深度用法

    摘要 本文原创,转载请注明地址:http://kymjs.com/code/2015/09/24/01这篇文章是对KJFrameForAndroid使用的一个深入学习 之前写过一些有关KJFrame的 ...

  2. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  3. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  4. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  5. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  6. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  7. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  8. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  9. [BOT] 一种android中实现“圆角矩形”的方法

    内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...

随机推荐

  1. Redux-DevTools 安装

    以下以Chrome为准. 首先,从Chrome Web Store(需要***支持)下载chrome 插件 Redux DevTools. 使用方式有两种: 一种只需在代码createStore中添加 ...

  2. 宝塔Linux常用命令

    https://www.bt.cn/bbs/thread-1186-1-1.html 2017年3月8日发布全新架构的宝塔Linux 面板3.1Beta版,到现在的5.2.0正式版,历经100多天打磨 ...

  3. SQL之PROCEDURE(存储过程)

    先来看一小段代码 create procedure pr_bank(@bank_id int) as BEGIN select *from bank where bank_ID = @bank_id ...

  4. Cocos2d-x for Windows Phone 用法总结

    鉴于诺基亚(微软移动这个没人用的手机)开发者比较少,cocos2dx移植方面更是少的问题,总结一下WP8移植方面的资料,希望对大家有用,自己也当作笔记留念. 1.WP8方面有两种方式创建项目,Hell ...

  5. day1作业:编写登陆接口

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路:要求是编写登陆接口,那么要有一个存放用户信息的模块:三次后锁定,要有一个存放锁定用户信息的模块:我们知 ...

  6. git status中文文件名编码问题解决

    在默认设置下,中文文件名在工作区状态输出,中文名不能正确显示,而是显示为八进制的字符编码. 通过将git配置变量 core.quotepath 设置为false,就可以解决中文文件名称在这些Git命令 ...

  7. 【Java】java.lang.NullPointerException的两个原因

    自己写程序时出现过 java.lang.NullPointerException错误的一些原因 (1)自己建立了一个数组,但每个数组元素没单独初始化(单独new一个新对象). (2)在进行if (ar ...

  8. bs和cs

    CS(Client/Server):客户端----服务器结构.C/S结构在技术上很成熟,它的主要特点是交互性强.具有安全的存取模式.网络通信量低.响应速度快.利于处理大量数据.因为客户端要负责绝大多数 ...

  9. iOS Sprite Kit教程之真机测试以及场景的添加与展示

    iOS Sprite Kit教程之真机测试以及场景的添加与展示 IOS实现真机测试 在进行真机测试之前,首先需要确保设备已经连在了Mac(或者Mac虚拟机)上,在第1.9.1小节开始,设备就一直连接在 ...

  10. BZOJ.5311.贞鱼(DP 决策单调)

    题目链接 很容易写出\(O(n^2k)\)的DP方程.然后显然决策点是单调的,于是维护决策点就可以了.. 这个过程看代码或者别的博客吧我不写了..(其实是忘了) 这样复杂度\(O(nk\log n)\ ...