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

相关推荐
电子云与长程纠缠5 分钟前
Godot学习03 - 实例化、层级访问、Export
android·学习·godot
毕设源码-朱学姐28 分钟前
【开题答辩全过程】以 基于Android的便民系统的设计与实现为例,包含答辩的问题和答案
android
鬼蛟38 分钟前
Spring————事务
android·java·spring
qq_170264752 小时前
unity出安卓年龄分级的arr包问题
android·unity·游戏引擎
kejiashao4 小时前
Android View的绘制流程及事件分发机制
android
小蜜蜂嗡嗡4 小时前
flutter实现付费解锁内容的遮挡
android·flutter
进击的cc4 小时前
拒绝背诵!一文带你打穿 Android ANR 发生的底层全链路
android·面试
进击的cc4 小时前
App 启动优化全家桶:别再只盯着 Application 了,热启动优化你真的做对了吗?
android·面试
彭波3965 小时前
安卓手机端安装xapk、apkm软件!怎样安装xapk软件?安卓的apk和XAPK的区别?附教程
android·智能手机
Yang-Never6 小时前
ADB ->adb shell perfetto 抓取 trace 指令
android·开发语言·adb·android studio