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

相关推荐
plainGeekDev8 分钟前
单例模式 → object 声明
android·java·kotlin
程序员陆业聪28 分钟前
读者点单·03|Compose 与传统 View 混用的 12 个真实坑
android
程序员陆业聪1 小时前
读者点单·02|Android 启动优化实战:Trace 抓取→Application 编排→冷启动全流程拆解
android
Coffeeee1 小时前
帮你快速理解AI Agent之我想招个Android实习生
android·人工智能·agent
恋猫de小郭2 小时前
苹果 AirPods 协议,Android 也可以使用完整版 AirPods 能力
android·前端·flutter
黄林晴2 小时前
告别无效重建:Gradle 9.6.0 解决 CI 构建缓存失效痛点告别无效重建:Gradle 9.6.0 解决 CI 建筑缓存失效痛点
android·gradle
张风捷特烈3 小时前
Flutter 类库大揭秘#01 | path_provider架构与设计
android·flutter
_阿南_12 小时前
Android文件读写和分享总结
android
通玄21 小时前
Jetpack Compose 入门系列(六):Navigation 3 页面导航
android
rocpp1 天前
Android 多语言切换实战:从 Context 到 Android 13 应用语言适配
android·kotlin