Mapa de bits y dibujable en Android

Mapa de bits y dibujable en Android

En Android, Bitmap y Drawable son dos clases importantes que se utilizan para procesar recursos de imágenes.

  1. Mapa de bits:
    Bitmap es una clase en Android que representa imágenes de mapa de bits. Se puede utilizar para cargar, crear y procesar datos de píxeles de imágenes. Los mapas de bits se utilizan comúnmente para mostrar imágenes en aplicaciones, como mostrar imágenes en ImageView o como lienzo para dibujar imágenes.

Algunos usos comunes de Bitmap incluyen:

  • Cargue una imagen desde un archivo de recursos o una ruta de archivo: puede utilizar el método decodeResource() o decodeFile() de la clase BitmapFactory para cargar un recurso de imagen y convertirlo en un objeto Bitmap.
  • Cree un mapa de bits en blanco: puede utilizar el método Bitmap.createBitmap() para crear un mapa de bits en blanco con un ancho, alto y formato de píxeles especificados.
  • Dibujar una imagen: puede utilizar el método drawBitmap() de la clase Canvas para dibujar un mapa de bits en el lienzo.
  • Procesamiento de imágenes: puede utilizar varios métodos de la clase Bitmap para recortar, escalar, rotar, etc.

Cabe señalar que los objetos de mapa de bits ocupan una gran cantidad de memoria. Demasiados objetos de mapa de bits pueden provocar un uso excesivo de la memoria y provocar errores OOM (sin memoria). Por lo tanto, cuando utilice Bitmap, debe prestar atención a liberar rápidamente el mapa de bits que ya no es necesario y utilizar estrategias de compresión adecuadas para reducir la sobrecarga de memoria.

  1. Drawable:
    Drawable es una clase abstracta utilizada en Android para representar recursos de imágenes dibujables. Dibujable puede ser un color, una imagen de mapa de bits, un gráfico vectorial o una animación, etc. Drawable se puede usar directamente para dibujar imágenes en la aplicación, como cuando se establece como fondo o primer plano de una Vista.

Algunas subclases comunes de Drawable incluyen:

  • BitmapDrawable: dibujable utilizado para mostrar imágenes de mapa de bits.
  • ColorDrawable: dibujable utilizado para representar un solo color.
  • ShapeDrawable: Dibujable para dibujar formas simples, como rectángulos, círculos, etc.
  • VectorDrawable: un dibujable utilizado para mostrar gráficos vectoriales, que puede lograr una escala de alta resolución sin distorsión.
  • AnimationDrawable: Drawable utilizado para mostrar animación cuadro por cuadro.

La ventaja de Drawable es que es un método de representación de imágenes abstractas que puede seleccionar automáticamente los recursos apropiados según la densidad de la pantalla y la orientación del dispositivo para lograr compatibilidad con diversos dispositivos. Además, su consumo de memoria suele ser menor que el de Bitmap.

En resumen, Bitmap es adecuado para cargar y procesar datos de píxeles de imágenes, mientras que Drawable es adecuado para representar recursos de imágenes dibujables abstractas. Durante el desarrollo, debe optar por utilizar Bitmap o Drawable según escenarios y necesidades específicos, y prestar atención a optimizar el uso de la memoria para mejorar el rendimiento de la aplicación y la experiencia del usuario.

Ejemplos de código

Bien, tomemos un ejemplo simple para ilustrar cómo usar Bitmap y Drawable en Android.

Primero, crearemos un nuevo proyecto de Android y colocaremos un archivo de imagen (por ejemplo, una imagen llamada "sample_image.jpg") en el directorio res.

A continuación, usaremos Bitmap y Drawable en MainActivity para cargar y mostrar esta imagen.

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 使用Bitmap加载图片文件
        ImageView imageViewBitmap = findViewById(R.id.imageViewBitmap);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample_image);
        imageViewBitmap.setImageBitmap(bitmap);

        // 使用Drawable加载图片文件
        ImageView imageViewDrawable = findViewById(R.id.imageViewDrawable);
        imageViewDrawable.setImageResource(R.drawable.sample_image);
    }
}

En el ejemplo anterior, activity_main.xmlcolocamos dos ImageViews en el archivo de diseño para mostrar imágenes cargadas por Bitmap y Drawable respectivamente.

Primero, utilizamos BitmapFactory.decodeResource()métodos para cargar imágenes desde archivos de recursos y convertirlas en objetos de mapa de bits. Luego, configure ese objeto Bitmap en la imagen del primer ImageView.

A continuación, utilizamos setImageResource()el método para configurar directamente el archivo de recursos Drawable (R.drawable.sample_image) en la imagen del segundo ImageView. Aquí, el sistema Android convertirá automáticamente el archivo de recursos Drawable en el objeto Drawable correspondiente y lo mostrará en ImageView.

A través del código anterior, podemos usar Bitmap y Drawable al mismo tiempo para cargar y mostrar imágenes en MainActivity. Cabe señalar que en aplicaciones reales, si necesita mostrar una gran cantidad de imágenes, especialmente imágenes más grandes, debe considerar el uso de escalado de mapas de bits, compresión y otras tecnologías para reducir la sobrecarga de memoria, evitar errores OOM y mejorar el rendimiento de la aplicación.

Supongo que te gusta

Origin blog.csdn.net/QYgujingjing/article/details/132090967
Recomendado
Clasificación