KJBitmap使用方法
摘要
本文原创,转载请注明地址: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使用方法的更多相关文章
- KJBitmap与KJHttp的深度用法
摘要 本文原创,转载请注明地址:http://kymjs.com/code/2015/09/24/01这篇文章是对KJFrameForAndroid使用的一个深入学习 之前写过一些有关KJFrame的 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
随机推荐
- SQlserver创建函数实现只取某个字段的数字部分
create FUNCTION [dbo].[GET_NUMBER](@S VARCHAR(100)) RETURNS VARCHAR(100) AS BEGIN WHILE PATINDEX('%[ ...
- Visual Studio Code 常用插件整理
常用插件说明: 一.HTML Snippets 超级使用且初级的H5代码片段以及提示 二.HTML CSS Support 让HTML标签上写class智能提示当前项目所支持的样式 三.Debugg ...
- hdu 5122 (2014北京现场赛 K题)
把一个序列按从小到大排序 要执行多少次操作 只需要从右往左统计,并且不断更新最小值,若当前数为最小值,则将最小值更新为当前数,否则sum+1 Sample Input255 4 3 2 155 1 2 ...
- InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移
系列目录 InterSystems Ensemble学习笔记(一) Ensemble介绍及安装InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移 一 ...
- MFC+WinPcap编写一个嗅探器之四(获取模块)
这一节主要介绍如何获取设备列表,比较简单 获取设备列表主要是在CAdpDlg中完成,也就是对应之前创建的选择适配器模块,如图: 当打开选择适配器对话框后,在列表视图控件中显示当前主机所有适配器及适配器 ...
- 解析文本文件 "r" 与 "rb" 模式的区别(Python)
r,rb 那么在读文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r':默认值,表示从文件读取数据.'b':表示要读写二进制数据 2.读文件 进行读文件操作时,直到读到文档结束符(E ...
- bzoj 1263 [SCOI2006]整数划分
n >= 6 的时候减3, 最后分类讨论, 上个Java import java.math.BigInteger; import java.util.*; public class Main { ...
- 创建 python 虚拟环境
conda 创建环境 conda 可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理.包管理与 pip 的使用类似,环境管理则允许用户方便地安装不同版本的 python 并可以快速切 ...
- mongdb 拓展的下载地址和编译安装(php)
下载地址:https://pecl.php.net/package/mongodb 编译安装: $ tar zxvf mongodb-mongodb-php-driver-<commit_id& ...
- CentOS7.4 关闭firewall防火墙,改用iptables
1.关闭默认的firewall防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service ...