内容简介:Picasso的使用介绍
什么是 Picasso
Picasso : 这里所说的 Picasso 是一款 优秀的 Android 图片 加载框架;
官网: http://square.github.io/picasso/
在 Android Studio 中使用方式
在 build.gradle 中引入
compile 'com.squareup.picasso:picasso:2.5.2'
Picasso 最简单的使用方式
Picasso.with(context) .load(url) .into(imageView);
这里的
with() 中放入的是上下文,比如 activity 等;
load() 中放入的是图片的资源,可以本地图片,也可以是网络图片,或者其他资源的图片;
into() 中放入的是需要显示图片的 View 组件, 可以是ImageView ,也可以是实现了 Target 接口的 其他自定义View 组件
Picasso 的其他属性
1. placeholder
Picasso.with(context) .load(url) .placeholder(R.drawable.user_placeholder) .into(imageView);
placeholder 是过度图片,当需要的图片还未加载出来时,可以使用这张过度图片。提升用户体验
2. noPlaceholder
noPlaceholder 刚刚好和 placeholder 相反。 noPlaceholder 的目的是强制设置为没有占位的过度图片,他不可以和 placeholder 一起使用,否则会抛出异常,(PS:详细也不可能一起使用的)。
3. error
Picasso.with(context) .load(url) .placeholder(R.drawable.user_placeholder) .error(R.drawable.user_placeholder_error) .into(imageView);
error 是用来显示当需要的图片的加载失败时, 代替显示的图片。
同样的。也有 noError 属性,使得阻止 错误图片显示。
4.noFade
在 Picasso 加载图片的时候,会有一个默认的渐入的过度效果,目的是为了 使得用户有更好的UI 视觉效果。然而这个属性的作用,就是禁止这个默认的过度效果。
5. Resize(int w,int h)
Resize 是用来设置显示的 图片的大小的,因为我们获得的图片的尺寸大小可能和我们想要显示的大小不一样,所以就需要重新设置图片的大小。Resize 的单位是 dp
6. onlyScaleDown
onlyScaleDown 配合着 上面的 Resize 一起使用,使得,当获得的图片大小,大于我们使用 Resize 设置的大小时,才起作用。
7. centerCrop()
centerCrop() 裁剪图片。使得图片充满 ImageView 的边界、居中显示。防止图片扭曲变形等。
8. centerInside()
由于上面的 centerCrop() 是可能看不到全部图片的,所以需要使用 centerInside() 来进行显示,但是当 图片尺寸小于我们设置的图片尺寸时。可能会造成图片没有充满组件 View 的边界。所以他们各有优缺点。
9.fit
fit 的作用主要是帮助我们自动测量 view 组件的大小,然后内部调用reszie方法把图片裁剪到View的大小。这样我们就不需要去自己计算和设置尺寸大小了,但是 fit() 也可能会造成图片压缩或者拉伸。所以最好配合着 centerCrop() 一起使用。
这里需要特别注意的是:
fit 只对ImageView 有效
ImageView 不能使用 wrap_content
10.Rotation()
Rotation() 使图片旋转,默认原点是(0,0),但是,也可以自己指定原点。
rotate(float degrees, float pivotX, float pivotY) 以(pivotX, pivotY)为原点旋转
11.Transformation
加载图片的时候使用的转换器,可以实现高斯模糊 ,对图片进行圆角处理,灰度处理等功能。
这里推荐一个关于 Picasso 的 Transformation 的相关效果的库
https://github.com/wasabeef/picasso-transformations请求优先级
Picasso 设置优先级有三个属性:
public enum Priority { LOW, NORMAL, HIGH }
设置优先级的方式:
Picasso.with(context) .load(url) .placeholder(R.drawable.user_placeholder) .error(R.drawable.user_placeholder_error) .priority(Picasso.Priority.HIGH) .into(imageView);
同步/异步加载图片
同步是使用 get() 方式:
try { Bitmap bitmap = Picasso.with(context).load(url).get(); } catch (IOException e) { e.printStackTrace(); }
需要注意的是,同步方式不能够在主线程中进行。
异步方式: fetch()
Picasso.with(this).load(url).fetch(new Callback() { @Override public void onSuccess() { //加载成功 } @Override public void onError() { //加载失败 } });
使用 fetch () 方式并不能够得到图片,只是得到图片加载成功失败的状态。而且 这种方式是 LOW 优先级的,也就是最低的优先级。使用异步的方式,是将 图片进行了缓存处理,想要得到图片的 Bitmap 。需要重新 去缓存中获取。
所以这样方式最好的使用场景就是进行图片的预加载。
Picasso 的缓存
Picasso 默认情况吓是进行了内存缓存和磁盘缓存的。如果我们 不想进行缓存,可以使用下面的方式:
禁止内存缓存
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)//禁止内存缓存
这里的
NO_CACHE:表示处理请求的时候跳过检查内存缓存
NO_STORE: 表示请求成功之后,不将最终的结果存到内存。
禁止磁盘缓存:
.networkPolicy(NetworkPolicy.NO_CACHE)//禁止磁盘缓存
这里的磁盘缓存有三个类型。分别是:
NO_CACHE: 表示处理请求的时候跳过处理磁盘缓存
NO_STORE: 表示请求成功后,不将结果缓存到Disk,但是这个只对OkHttp有效。
OFFLINE: 这个就跟 上面两个不一样了,如果networkPolicy方法用的是这个参数,那么Picasso会强制这次请求从缓存中获取结果,不会发起网络请求,不管缓存中能否获取到结果。
Picasso开启日志和地址tag
开启日志:
.setLoggingEnabled(true);//开启日志打印
缓存指示器:
.setIndicatorsEnabled(true);//显示指示器
当开启缓存指示器后,会在图片的左上角看到几种颜色的标识。
绿色表示从内存加载、蓝色表示从磁盘加载、红色表示从网络加载。
Tag:
Picasso 允许我们为一个请求设置tag来管理请求
cancelTag(Object tag) 取消设置了给定tag的所有请求
pauseTag(Object tag) 暂停设置了给定tag 的所有请求
resumeTag(Object tag) 重启被暂停的给定tag的所有请求
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Science of Programming
David Gries / Springer / 1989-4-21 / USD 99.00
Describes basic programming principles and their step-by- step applications.Numerous examples are included.一起来看看 《The Science of Programming》 这本书的介绍吧!