Android图片加载框架Coil,Kotlin

Android图片加载框架Coil,Kotlin

Kotlin 复制代码
implementation("io.coil-kt:coil:1.4.0")
Kotlin 复制代码
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)
        }
    }
}

或者:

Kotlin 复制代码
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实现看更细颗粒度的内存、磁盘缓存的客制化设置。

相关推荐
onthewaying1 小时前
Android SurfaceTexture 深度解析
android·opengl
茄子凉心1 小时前
Android Bluetooth 蓝牙通信
android·蓝牙通信·bluetooth通信
00后程序员张2 小时前
iOS 26 App 运行状况全面解析 多工具协同监控与调试实战指南
android·ios·小程序·https·uni-app·iphone·webview
2501_916007473 小时前
iOS 混淆实战,多工具组合完成 IPA 混淆、加固与发布治理(iOS混淆|IPA加固|无源码混淆|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
2501_915918413 小时前
怎么上架 App?iOS 应用上架完整流程详解与跨平台发布实战指南
android·ios·小程序·https·uni-app·iphone·webview
2501_929157683 小时前
【安卓+PC+IOS】psp全中文游戏+高清纹理包+金手指
android·游戏·ios
2501_916008893 小时前
iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固(iOS混淆|IPA加固|无源码加固|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
yinghuaqipao3 小时前
面向对象——设计模式(创建型)
android·java·设计模式
用户41659673693554 小时前
Android 性能调优与故障排查:ADB 诊断命令终极指南
android
沐怡旸4 小时前
【底层机制】【Android】本地Socket 对比 Binder 以及在 Android系统中的应用
android·面试