Android图片加载框架Coil,Kotlin
Android图片加载框架Coil,Kotlin
implementation("io.coil-kt:coil:1.4.0")
import android.os.Bundle
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import coil.Coil
import coil.ImageLoader
import coil.request.ImageRequest
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
companion object {
val SIZE = 400
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.image_layout)
val imageView = findViewById<ImageView>(R.id.image)
val ctx = this.applicationContext
val mImageLoader = ImageLoader.Builder(ctx).build()
Coil.setImageLoader(mImageLoader)
val request = ImageRequest.Builder(ctx)
.size(SIZE)
.data(R.mipmap.p)
.target(imageView)
.build()
lifecycleScope.launch(Dispatchers.IO) {
Coil.execute(request)
}
}
}
或者:
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.util.Log
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import coil.Coil
import coil.ImageLoader
import coil.request.ImageRequest
import coil.target.Target
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
companion object {
val SIZE = 400
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.image_layout)
val imageView = findViewById<ImageView>(R.id.image)
val ctx = this.applicationContext
val mImageLoader = ImageLoader.Builder(ctx).build()
Coil.setImageLoader(mImageLoader)
val request = ImageRequest.Builder(ctx)
.size(SIZE)
.data(R.mipmap.p)
.target(object : Target {
override fun onStart(placeholder: Drawable?) {
super.onStart(placeholder)
Log.d("fly", "onStart")
}
override fun onSuccess(result: Drawable) {
super.onSuccess(result)
Log.d("fly", "onSuccess")
imageView.setImageDrawable(result)
}
})
.build()
lifecycleScope.launch(Dispatchers.IO) {
Coil.execute(request)
}
}
}
Coil是专门针对Android平台上的Kotlin语言特性设计,这不像Glide,Glide的核心框架语言是Java。Coil实现看更细颗粒度的内存、磁盘缓存的客制化设置。