Android的常用框架

本文介绍了Android开发中常用的图片加载框架Universal Image Loader、Picasso和Glide,以及数据解析框架Gson和Jackson,还有数据库框架OrmLite和GreenDao的使用方法和特点。详细讲解了各个框架的依赖添加、基本用法和关键方法,帮助开发者更好地理解和运用这些Android框架。
摘要由CSDN通过智能技术生成

1. 前言

每种编程语言都有其相应的框架,而Android也不例外;那么Android的框架到底有多少种,且其框架相应的特点与构成又是如何的呢?接下来,就让我们一起去学习一下Android的一些常用框架。

2. Android常用框架的构成图

我把我目前所知晓得的一些Android常用的框架以构成图的形式进行展示,从而使Android的常用框架可以更加清晰明了的展现出来,构成图如下:
Android常用框架

3. Android常用框架

通过以上的Android常用框架的构成图,我们可以晓得本篇博文主要对这七个常用框架进行相应的讲解。

3.1 图片加载

3.1.1 Universal Image Loader

3.1.1.1 添加依赖

Maven

<dependency>
    <groupId>com.nostra13.universalimageloader</groupId>
    <artifactId>universal-image-loader</artifactId>
    <version>1.9.5</version>
</dependency>
3.1.1.2 特点

1、多线程下载图片,图片可以来源于网络、文件系统、项目文件夹assets和drawable等;
2、支持随意的配置ImageLoader,例如线程池、图片下载器、内存缓存策略、硬盘缓存策略、图片显示选项以及其他的一些配置;
3、支持图片的内存缓存、文件系统缓存或者SD卡缓存;
4、支持图片下载过程的监听;
5、根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存;
6、较好的控制图片的加载过程,例如暂停图片加载、重新开始加载图片,一般使用在ListView、GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片;
7、提供在较慢的网络下对图片进行加载。

3.1.1.3 流程图

Android Universal Image Loader流程图

3.1.1.4 常用方法
3.1.1.4.1 配置ImageLoaderConfiguration

通过配置ImageLoaderConfiguration类来实现全局ImageLoader的实现情况;以下代码根据个人的需求进行相应的更改。

//获取缓存文件
File cacheDir = StorageUtils.getCacheDirectory(this);
//设置自定义缓存的目录
cacheDir = StorageUtils.getOwnCacheDirectory(this,"imageloader/Cache");
//初始化ImageLoad
ImageLoaderConfiguration config =newImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480,800)//设置缓存图片的默认尺寸,一般取设备的屏幕尺寸
.diskCacheExtraOptions(480,800, null)
.threadPoolSize(3)// 线程池内加载的数量,default = 3
.threadPriority(Thread.NORM_PRIORITY-2)
.tasksProcessingOrder(QueueProcessingType.FIFO)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(newLruMemoryCache(2*1024*1024))//自定义内存的缓存策略
.memoryCacheSize(2*1024*1024)
.memoryCacheSizePercentage(13)// default
.diskCache(newUnlimitedDiskCache(cacheDir))// default
.diskCacheSize(50*1024*1024)
.diskCacheFileCount(100)//缓存的文件数量
.diskCache(newUnlimitedDiskCache(cacheDir))//自定义缓存路径
.diskCacheFileNameGenerator(newHashCodeFileNameGenerator())// default
.imageDownloader(newBaseImageDownloader(this))// default
.imageDecoder(newBaseImageDecoder(true))// default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())// default
.writeDebugLogs()
.build();
3.1.1.4.2 加载图片

在使用ImageLoader进行图片加载的时候,先要实例化ImageLoader,在每个布局里面都要实例化后再使用。

protectedImageLoader imageLoader = ImageLoader.getInstance();
3.1.1.4.3 显示图片

1、加载一张网络图片

ImageLoader.getInstance().displayImage(imageUrl, imageView);

2、加载一张网络图片并自定义配置

ImageLoader.getInstance().displayImage("图片地址",mImageView,mOptions);

3、加载一张图片并对图片的加载过程进行监听

ImageLoader.getInstance().displayImage("图片地址",mImageView2,mOptions, newImageLoadingListener() {
   
@Override
public voidonLoadingStarted(String imageUri,View view) {
   
//开始加载
}
@Override
public voidonLoadingFailed(String imageUri,View view,FailReason failReason) {
   
//加载失败
}
@Override
public voidonLoadingComplete(String imageUri,View view,Bitmap loadedImage) {
   
//加载完成
}
@Override
public voidonLoadingCancelled(String imageUri,View view) {
   
//取消加载
}
});

4、图片加载时候,带监听又带加载进度条的情况调用:

imageLoader.displayImage(imageUrl, imageView, options,newImageLoadingListener() {
   
@Override
publicvoidonLoadingStarted() {
   
//开始加载的时候执行
}
@Override
publicvoidonLoadingFailed(FailReason failReason) {
   
//加载失败的时候执行
}
@Override
publicvoidonLoadingComplete(Bitmap loadedImage) {
   
//加载成功的时候执行
}
@Override
publicvoidonLoadingCancelled() {
   
//加载取消的时候执行
},newImageLoadingProgressListener() {
   
@Override
publicvoidonProgressUpdate(String imageUri, View view,intcurrent,inttotal) {
   
//在这里更新 ProgressBar的进度信息
}
});
3.1.1.5 注意点

1、ImageLoaderConfiguration必须配置并且全局化的初始化这个配置ImageLoader.getInstance().init(config),否则会出现错误提示;
2、ImageLoader是根据ImageView的heightwidth确定图片的宽高;

3.1.2 Picasso

3.1.2.1 添加依赖

Maven

<dependency>  
    <groupId>com.squareup.picasso</groupId>
    <artifactId>picasso</artifactId>
    <version>2.5.2</version>
</dependency>
3.1.2.2 简单的加载图片

Picasso使用的是链式编程,它至少需要三个参数才能完成基本地图像请求

  • with(Context context)——很多Android API都会去如此调用,这里也没有什么区别
  • load(String imageUrl)——应该加载哪个图像,大多数情况下,我们会使用String来代表一个url图像
  • into(ImageView targetImageView)——目标显示的ImageView
    举个例子,就可以很容易明白,并且应用
ImageView targetImageView = (ImageView) findViewById(R.id.imageView);  
String internetUrl = "http://i.imgur.com/DvpvklR.png";

Picasso  
    .with(context)
    .load(internetUrl)
    .into(targetImageView);
3.1.2.3 常用方法
3.1.2.3.1 资源加载
int resourceId = R.mipmap.ic_launcher;

Picasso  
    .with(context)
    .load(resourceId)
    .into(imageViewResource);
3.1.2.3.2 文件加载
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");

Picasso  
    .with(context)
    .load(file)
    .into(imageViewFile);
3.1.2.3.3 Uri加载
Uri uri = resourceIdToUri(context, R.mipmap.future_studio_launcher);

Picasso  
    .with(context)
    .load(uri)
    .into(imageViewUri);

public static final String ANDROID_RESOURCE = "android.resource://";  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值