Skip to content

PicassoExtensions

燒餅 edited this page Jun 3, 2017 · 4 revisions

PicassoExtensions 是来自 moe.feng.kotlinyan:kotlinyan-picasso-support 模块的扩展。 引入了强大的异步加载图片框架 Picasso

在 ImageView 上异步加载

当你想要从一个地址中加载图片时, 在 Java 上使用 Picasso 的写法是这样的:

Picasso.with(context).load("http://wx1.sinaimg.cn/large/6f76b6dagy1fg5rg39y07j20r80hskbd.jpg").into(imageView);

引入扩展的 Kotlin 可以这样写:

imageView.loadUrl = "http://wx1.sinaimg.cn/large/6f76b6dagy1fg5rg39y07j20r80hskbd.jpg"

是不是简便多了?

除了传入 String 地址让 Picasso 进行加载,还可以使用 Uri 或者 File。

比如:

imageView.loadUri = targetUri // 使用 Uri
imageView.loadFile = File(externalPath) // 使用 File

如果想要传入 Picasso 回调,可以这样赋值,PicassoExtensions 会使用 View 的 Tags 存放回调在加载时会自动传给 Picasso:

imageView.picassoCallback = object : Callback { ... }

设置 Placeholder

在 0.1.3 版本开始,Kotlinyan 扩展了 ImageView 属性 placeholderResource : Int & placeholder : Drawable

当你想在 Picasso 加载时显示 Placeholder 只需设置这两个属性其中之一即可。

应用 Picasso 请求

如果 PicassoExtensions 提供的扩展属性还不能满足需求,希望能够直接获得 RequestCreator 进行设置,则需要用到 ImageView.picassoRequestTransform

例如:

imageView.picassoRequestTransform {
    ...
    memoryPolicy(...)
    networkPolicy(...)
}

启用 Material 渐变动画

如果你使用上述方法加载图片,在传入图片位置前调用 imageView.enableMaterialPicassoAnimation() 即可。(会覆盖 picassoCallback)

如果你坚持使用 Picasso 原有的链式函数调用,可以将 into() 替换为 intoMaterialStyle()。(这个方法支持额外的回调)

渐变动画的实现使用了 florent37/MaterialImageLoading

Clone this wiki locally