38 - Dibujar: una imagen

Para mostrar un archivo jpg, png etc. disponemos en la clase Canvas de un método llamado drawBitmap.

Problema:

Mostrar el contenido de un archivo jpg en la pantalla sabiendo que tiene un tamaño de 250 píxeles de ancho por 200 de alto.

1 - Creamos un proyecto llamado: Proyecto042

Borramos el TextView que agrega automáticamente el Android Studio y definimos el id del ConstraintLayout con el valor: layout1:

Canvas Android

Descargar de internet una imagen y redimensionarla a 250*200 píxeles. Copiar dicho archivo a la carpeta res/mipmap-mdpi de nuestro proyecto:

Canvas Android

Ahora codificamos la clase donde se encuentra toda la lógica:

package com.tutorialesprogramacionya.proyecto042

import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.Canvas
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val fondo = Lienzo(this)
        val layout1=findViewById<ConstraintLayout>(R.id.layout1)
        layout1.addView(fondo)
    }

    internal inner class Lienzo(context: Context) : View(context) {

        override fun onDraw(canvas: Canvas) {
            canvas.drawRGB(0, 0, 255)
            val bmp = BitmapFactory.decodeResource(resources, R.mipmap.imagen1)
            canvas.drawBitmap(bmp, 0f, 0f, null)
        }
    }
}

Para recuperar la imagen del archivo de la carpeta res/mipmap-mdpi debemos utilizar el método decodeResource:

            val bmp = BitmapFactory.decodeResource(resources, R.mipmap.imagen1)

Una vez que tenemos creado el objeto de la clase Bitmap procedemos a posicionar la imagen en la pantalla del dispositivo:

            canvas.drawBitmap(bmp, 0f, 0f, null)

La vista previa de la aplicación es:

Canvas Android

Este proyecto lo puede descargar en un zip desde este enlace: proyecto042.zip