【afinal框架】FinalBitmap的简要介绍与使用

首先,afinal开源框架是由国内开发者杨福海编写整理而成,在此,感谢他的无私贡献。

afinal框架的github地址

afinal框架有四个部分,分别为FinalActivity、FinalBitmap、FinalDb、FinalHttp组成,分别完成Activity定义、图片加载、数据库使用、网络操作的功能,具体的介绍不再说了,今天这篇文章主要是介绍FinalBitmap,也就是图片加载这个类的使用与介绍。

首先在Android开发中,图片的显示可以说是必不可少的,由于Android运行平台的特点,我们在加载图片,特别是网络图片的时候,一般都会完成图片的缓存,从而减少Android系统的运行负荷。而完成图片的缓存,又分为两种,一种是完成图片的本地缓存,就是把从网络加载过的图片放在本地,这样当我们下次再次加载相同的图片的时候,我们就可以直接从本地的硬盘中获取图片,从而减少图片的加载速度,更重要的是减少流量和手机电量的损耗。

除了将图片缓存到本地之外,我们在图片加载完之后,还应该将图片缓存在我们的手机内存中,比如在Listview控件里显示网络图片,由于我们上下滑动造成item会不断的生成并显示数据,这个时候如果我们要显示图片,那么每次都要从网络这是是本地硬盘读取图片实现相当的影响性能的,因此,我们最好将刚加载好的图片,在内存中进行缓存,那么当我们上下的滑动Listview的时候,我们就可以直接从我们的内存中获取图片的引用,从而加快我们的加载速度。

一般来说,要自己实现这两种缓存方式还是挺复杂的,还好,FinalBitmap已经为我们实现了这些功能,因此,我们要做的功能就非常少了,下面,我们介绍FinalBitmap的简单使用。

private static FinalBitmap mFinalBitmap;

	private FinalBitmap(Context context) {
		mContext = context;
		mConfig = new FinalBitmapConfig(context);
		configDiskCachePath(Utils.getDiskCacheDir(context, "afinalCache").getAbsolutePath());// 配置缓存路径
		configDisplayer(new SimpleDisplayer());// 配置显示器
		configDownlader(new SimpleDownloader());// 配置下载器
	}

	/**
	 * 创建finalbitmap
	 *
	 * @param ctx
	 * @return
	 */
	public static synchronized FinalBitmap create(Context ctx) {
		if (mFinalBitmap == null) {
			mFinalBitmap = new FinalBitmap(ctx.getApplicationContext());
		}
		return mFinalBitmap;
	}

上面是FinalBitmap的源码,我们可以看出,FinalBitmap使用的是线程安全的单例模式,因此,当我们想获取一个FinalBitmap对象的时候,我们可以这样做

FinalBitmap bitmap = FinalBitmap.create(context);

获取到我们的FinalBitmap对象之后,我们就可以使用display方法来显示图片了。FinalBitmap给我们提供了好几种display方法,可以很简单的实现网络图片的加载,下面我们简单看一下

//设置图片的uri地址
		String uri = "http://avatar.csdn.net/C/6/8/1_bz419927089.jpg";
		//初始化加载中时显示的图片
		Bitmap loadingBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
		//初始化加载失败显示的图片
		Bitmap failBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
		//第一种方式:image为要显示图片的控件
		bitmap.display(image, uri);
		//第二种方式:loadingBitmap为正在加载时显示的图片
		bitmap.display(image, uri, loadingBitmap);
		//第三种方式:config为FinalBitmap的配置对象,可以配置显示的动画,大小,加载失败图片等等
		BitmapDisplayConfig config = new BitmapDisplayConfig();
		config.setLoadingBitmap(loadingBitmap);
		bitmap.display(image, uri, config);
		//第四种方式:loadingBitmap为加载中图片,failBitmap为加载失败图片
		bitmap.display(image, uri, loadingBitmap, failBitmap);
		//第五种方式:我们也可以设置加载图片的大小
		bitmap.display(image, uri, 100, 100);
		//第六种方式:设置加载图片的大小以及加载中和加载失败的图片
		bitmap.display(image, uri, 100, 100, loadingBitmap, failBitmap);

从上面的使用我们可以看出,FinalBitmap可以说是非常简单就可以上手的,这为我们的开发节省了很多的时间。

下面,我们简单的分析一下FinalBitmap的源代码

private FinalBitmap(Context context) {
		mContext = context;
		mConfig = new FinalBitmapConfig(context);
		configDiskCachePath(Utils.getDiskCacheDir(context, "afinalCache").getAbsolutePath());// 配置缓存路径
		configDisplayer(new SimpleDisplayer());// 配置显示器
		configDownlader(new SimpleDownloader());// 配置下载器
	}

上面这段代码是FinalBitmap的构造器,我们可以看出,在初始化的时候,已经为我们配置好了图片的缓存路径,这个缓存路径我们可以通过configDiskCachePath方法来修改默认的缓存路径,我的测试机上默认的缓存路径为

/storage/sdcard0/Android/data/com.example.afinatest/cache/afinalCache

除了设置我们的缓存路径,我们还可以设置缓存目录的大小,方法是

configDiskCacheSize

但是这个方法要注意的是,默认的是5M,只有设置大小为5M之上的时候,我们的设置才起作用。

除此之外,如果我们想清除我们的图片缓存,那么我们就可以通过clearDiskCache方法,把硬盘的缓存清除掉

还有一点很重要的是,在我们使用FinalBitmap的时候,我们还要在Activity的onResume、onPause、onDestroy这三个生命周期的方法中,调用FinalBitmap对应的这三个方法,从而使我们占用的资源进行很好的回收

/**
	 * activity onResume的时候调用这个方法,让加载图片线程继续
	 */
	public void onResume() {
		setExitTasksEarly(false);
	}

	/**
	 * activity onPause的时候调用这个方法,让线程暂停
	 */
	public void onPause() {
		setExitTasksEarly(true);
	}

	/**
	 * activity onDestroy的时候调用这个方法,释放缓存
	 * 执行过此方法后,FinalBitmap的缓存已经失效,建议通过FinalBitmap.create()获取新的实例
	 *
	 * @author fantouch
	 */
	public void onDestroy() {
		closeCache();
	}

【afinal框架】FinalBitmap的简要介绍与使用

时间: 2024-10-13 15:36:03

【afinal框架】FinalBitmap的简要介绍与使用的相关文章

Afinal框架FinalBitmap使用方法

Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其更加简单易用: ? 使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题. ?Afinal的宗旨是简洁,快速.约定大于配置的方式.尽量一行代码完成所有事情. 目前Afinal主要有四大模块: ? FinalDB模块:android中的orm框架,一行代码就可以进行增删改查.支持一对多,

Android框架简要介绍

1.      Android架构直观图 下图展示了Android系统的主要组成部分: 整体上而言,Android系统结构由5个部分组成,从上到下,别人是Applications (Android应用层).ApplicationFramework (Android应用程序框架层).Libraries.Android Runtime (Anroid运行时).Linux Kernel (Linux内核).其中,Libraries和Android Runtime处于Android框架的同一层.下面简要

Android应用程序窗口(Activity)实现框架简要介绍和学习计划

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8170307 前面我们学习了SurfaceFlinger服务的实现原理.有了这个基础之后,从本文开始,我们就可以分析Android系统在Java层的UI实现了.我们知道,在Android应用程序的四大组件中,只有Activity组件与UI相关,它描述的是应用程序窗口,因此,我们就通过它的UI实现来分析Android系统在Java层的UI实现.本文

FinalActivity的简要介绍与使用

之前的两篇文章介绍了AFinal框架下的图片加载与网络通信的部分,这篇文章主要简单介绍FinalActivity的使用. 首先,FinalActivity是基于IOC机制,通过依赖注入的方式完成控件的id绑定与事件绑定,从而实现代码量的精简.下面是FinalActivity的最简单的使用 public class MainActivity extends FinalActivity { @ViewInject(id = R.id.btn, click = "click") Button

Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入

一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sqlite orm 和 ioc 框架.使其更加简单易用,Afinal的宗旨是简洁,高速.约定配置的方式之后,尽量一行代码完毕全部事情,代码入侵性小,在三者中比較推荐.在这里我们主要使用http框架的 FinalHttp和FinalBitmap组件实现网络图片的载入 案例介绍--实现图片新闻浏览: 二.案

Android批量图片加载经典系列——afinal框架实现图片的异步缓存加载

一.问题描述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存加载(查看系列文章:http://www.cnblogs.com/jerehedu/p/4607599.html#pltpjz),接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sqlite orm 和 ioc 框架.使其更加简单易用,Afinal的宗旨是简洁,快速.约定配置的方式之后,尽量一行代码完成所有事情,代码入侵性小,在三者中比较推荐.在这里我们主要使用

Android Afinal框架

项目如图: 本文参考网络! Afinal是一个开源的android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少.在android应用开发中,通过 Afinal的ioc框架,诸如ui绑定,事件绑定,通过注解可以自动绑定.通过Afinal的orm框架,无需任何配置信息,一行代码就可以对 android的sqlite数据库进行增删改查操作.同时,Afinal内嵌了finalHttp等简单易用的工具,可以轻松的对http就行求情的操 作.Afinal的宗旨是简洁,快速.约定大于配置的方式

Android运行时ART简要介绍和学习计划

Android在4.4就已推出新运行时ART,准备替代用了有些时日的Dalvik.不过当时尚属测试版,主角仍是Dalvik. 直到今年的Google I/O大会,ART才正式取代Dalvik.这个消息在科技界引起不小轰动,也吸引不少技术人员对它的"技术分析".可惜这些"技术分析"不过是引用了官方的数据和图表而已.这一系列文章将对ART进行真正的技术分析.老规矩,分析前先进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyang

Android应用程序UI硬件加速渲染技术简要介绍和学习计划

Android系统的流畅性一直被拿来与iOS比较,并且认为不如后者.这一方面与Android设备硬件质量参差不齐有关,另一方面也与Android系统的实现有关.例如在3.0前,Android应用程序UI绘制不支持硬件加速.不过从4.0开始,Android系统一直以"run fast, smooth, and responsively"为目标对UI进行优化.本文对这些优化进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!