当前位置: 首页 > article >正文

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

 


http://www.kler.cn/a/540715.html

相关文章:

  • Linux下Gufw防火墙安装指南
  • DeepSeek本地部署详细指南
  • 哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测
  • ASP.NET Core JWT
  • kafka服务端之副本
  • 深度学习-语音转文字
  • 国税局发票查验中英文验证码识别,识别率99.99%
  • 十四. Redis 新功能
  • day10-字符串
  • Spring Boot 与 Kafka 实现高效消息队列通信的最佳实践
  • flutter ListView Item复用源码解析
  • 亲自测试并推荐的第三方平台使用DeepSeek 和 LM Studio 本地部署DeepSeek
  • AI刷题-子数组和的最大值问题
  • 【Java 面试 八股文】Redis篇
  • 数字电路-基础逻辑门实验
  • Day 32 卡玛笔记
  • 基于 GEE 的网格化降雨数据可视化与时间序列分析
  • DeepSeek与AI提示语设计的全面指南
  • 【信息系统项目管理师-案例真题】2018上半年案例分析答案和详解
  • DeepSeek本地部署(解决ollama无法安装问题)
  • 【Java基础篇】——第4篇:Java常用类库与工具类
  • 深度学习-108-大语言模型LLM之基于langchain的结构化输出功能提取结构化信息
  • at coder ABC 392
  • Apache Kafka 消息清理之道
  • 【大数据安全分析】为什么要用大数据技术进行安全分析?
  • 【人工智能】如何在VSCode中使用DeepSeek?