ngima / CoilExample

Coil is Image loading for Android backed by Kotlin Coroutines.

Home Page:https://github.com/coil-kt/coil

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This repo is just created to resolve the StackOverflow Question: Coil ImageRequest for drawable resource

Implementation

package me.ngima.coilexample

import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import coil.ImageLoader
import coil.request.ImageRequest
import me.ngima.coilexample.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {


    lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)

        setContentView(binding.root)

        initListeners()
    }

    private fun initListeners() = with(binding) {
        rdoGroup.setOnCheckedChangeListener { radioGroup, id ->
            when (id) {
                R.id.rdoImage -> updateImage(this@MainActivity, "image")
                R.id.rdoVideo -> updateImage(this@MainActivity, "video")
                R.id.rdoAudio -> updateImage(this@MainActivity, "audio")
                else -> updateImage(this@MainActivity, "file")
            }
        }
    }

    private fun updateImage(context: Context, mimeType: String) {
        val imageLoader = ImageLoader.Builder(context)
            .availableMemoryPercentage(0.25)
            .crossfade(true)
            .build()

        val drawable = when {
            mimeType.startsWith("image") -> R.drawable.ic_baseline_image_24
            mimeType.startsWith("video") -> R.drawable.ic_baseline_ondemand_video_24
            mimeType.startsWith("audio") -> R.drawable.ic_baseline_audiotrack_24
            else -> R.drawable.ic_baseline_attach_file_24
        }

        val imageRequest = ImageRequest.Builder(context)
            .data(drawable)
            .crossfade(true)
            .target(binding.imageView)
            .build()

//blah-blah
// and somewhere deep inside code
        imageLoader.enqueue(imageRequest)
    }
}

Output

About

Coil is Image loading for Android backed by Kotlin Coroutines.

https://github.com/coil-kt/coil


Languages

Language:Kotlin 100.0%