0

我有一个ImageView类的扩展功能。我已经实现了一些关于如何根据传递的参数加载图像的逻辑。但在这里我被困住了。这些fit()centerCrop()返回 Picasso's RequestCreator,我什至无法构造它(它具有包私有构造函数)以便稍后修改它(基于参数)。我只是不知道该怎么做。我设法做到这一点的唯一方法是如下所示(请注意:你的眼睛会开始流血)。我找不到“正常”、“好”的方法来做到这一点。

所以我问你:我应该怎么做?

fun ImageView.load(resId: Int, centerCrop: Boolean = true, fit: Boolean = true) {

// Improve this, there must be a better way

if (centerCrop && fit) {
    Picasso.get()
            .load(resId)
            .fit()
            .centerCrop()
            .into(this)
} else if (centerCrop && !fit) {
    Picasso.get()
            .load(resId)
            .centerCrop()
            .into(this)
} else if (!centerCrop && fit) {
    Picasso.get()
            .load(resId)
            .fit()
            .into(this)
} else if (!centerCrop && !fit) {
    Picasso.get()
            .load(resId)
            .into(this)
}

}

4

1 回答 1

2

您也可以使用Kotlins 功能

fun ImageView.load(resId: Int, centerCrop: Boolean = true, fit: Boolean = true) {
    Picasso.get()
        .load(resId)
        .also { if (centerCrop) it.centerCrop() }
        .also { if (fit) it.fit() }
        .into(this)
}
于 2019-01-09T20:39:32.387 回答