Android上 Kotlin 的图片加载库

如果您正在阅读本文,则可能意味着该回到了代码编辑器了。我最近发现了图像加载库Coil,我想我会对其进行一些探索并分享我发现的内容。

线圈:是什么?

根据他们的文档,Coil代表协程图像加载器,它是一个由Kotlin协程支持的图像加载库。如果您不熟悉Kotlin协程,那么不要担心,这些只是轻量级线程。使用这个库也不需要协作程序的知识,所以我不会深入研究Kotlin协作程序的复杂细节。

但是我们真的需要另一个图像加载库吗?

您可能想知道我们是否真的在充满Glide和Picasso或Universal Image Loader的世界中是否需要另一个图像加载库- 对于那些已经在Android平台上开发了一段时间的人 。但是,关于线圈,有两件事引起了我的注意:

  1. 与我选择的图像加载库Glide相比,它的尺寸更小。而且,
  2. 令人惊讶的是,它非常易于使用。您将在本文的下半部分看到,该库非常惯用,这就是Kotlin所要解决的问题,而且还很棒。

好吧,我被说服了,下一步呢?

为了在您的项目中使用Coil,您需要使您的项目已经在使用AndroidX。它还必须使用SDK级别29进行编译以及使用Java 8。

如果满足上述每个条件,则需要在build.gradle文件中的应用程序级别依赖项中添加以下行,然后才能使用该库:

implementation("io.coil-kt:coil:0.9.1")

这将包括带有默认值的默认工件Coil。这样,您就可以开始在Android应用程序中更轻松,更快速地开始图像加载了。

加载图像

要将图像加载到ImageView,Coil提供了一个漂亮的扩展功能,称为load()

下面是正在使用的库的代码片段:

//Loading from a URL
imageView.load("https://via.placeholder.com/600/92c952")

//Loading from an image drawable
imageView.load(R.drawable.some_image_placeholder)

// Loading from a file
imageView.load(File("/path/to/some_image_placeholder.png"))

真的就是这么简单。你不能把这个东西编起来!

在后台,该load()功能可以完成很多事情。以从URL加载为例:

  • 线圈创建一个RequestDisposable对象,该对象基本上是负责连接到网络的对象。
  • 通过网络请求在URL中指定的图片,并将结果加载到上target
  • 在这种情况下,实例ImageView是预期的target因此具有扩展功能的美)。

让我们探索更多...

在这一点上,您可能想知道如何使该库执行某些操作,例如配置占位符,或者应用转换以圆形裁剪图像。

好吧,这真的很容易。您只需在load()扩展功能之后将配置添加到尾随lambda中即可。

观察:

//Applying image loading with configurations
imageView.load("https://via.placeholder.com/600/92c952") {
    crossfade(true)
    placeholder(R.drawable.placeholder_image)
    transformations(CircleCropTransformation())
}

很简单的!

似乎还不够,Coil支持加载到自定义目标。

使用单例中的load()扩展功能Coil,您将得到以下内容:

//Custom targets
Coil.load("https://via.placeholder.com/600/92c952"){
    target{ drawable ->
        //Do something with result e.g apply a filter to greyscale image.
    }
}

您甚至可以侦听诸如onSuccess、onStart、onError和onCancel之类的特定事件,但是在本文中我不会详细讨论这些事件。如果你想让我潜得更深,你可以告诉我。我将创建一个线圈党技巧2部分的文章涉及图书馆的每一个方面,这样的话我就可以找到。

有关转换的更多信息

Coil库提供了4种现成的转换,即

  • BlurTransformation -应用高斯模糊。
  • CircleCropTransformation -裁剪图像并将其居中成一个圆圈。
  • GrayscaleTransformation -将图像着色为灰度。
  • RoundedCornersTransformation -裁切图像以适合目标尺寸并修圆图像的角。

其他要注意的酷事

关于Coil库,还有一些很酷的注意事项。

  1. 它对扩展的支持非常广泛,这可以让开发人员在项目中支持更多文件类型,来满足他们的需求。
  2. 它具有使测试更加容易的功能。基本上,您可以模拟ImageLoader对象的实例,因为它是一个接口。
  3. 没有注释处理!这是一个很大的。这意味着在您使用Glide的情况下,可以更快地构建项目,您知道这很重要。他们使用Kotlin的扩展功能。

结论

Coil是一个非常漂亮的Android图像加载库。我与Instacart毫无关系,但是我是更简洁代码的倡导者,而且我一直都很懒惰。我会做任何让我的生活更轻松的事情,而Coil就是那样,至少要加载图像!

请继续尝试一下,甚至可以从当前的图像加载库中迁移。

如果您想了解更多信息,我在下面提供了一些可能对您有用的链接:

  • 线圈介绍:Kotlin首次在Android上加载图片
  • 线圈文件
  • Coil Github项目 -浏览代码。

原文链接:https://dev.to//kudziechase/taking-a-look-at-coil-an-image-loading-library-for-kotlin-on-android-1ndp

你可能感兴趣的:(Android上 Kotlin 的图片加载库)