Buscar..


Introducción

ImageView ( android.widget.ImageView ) es una vista para mostrar y manipular recursos de imágenes, como Drawables y Bitmaps.

Algunos efectos, discutidos en este tema, pueden aplicarse a la imagen. La fuente de la imagen se puede configurar en un archivo XML (carpeta de layout ) o programáticamente en un código Java.

Sintaxis

  • El método setImageResource(int resId) establece un dibujo como el contenido de este ImageView .
  • Uso: imageView.setImageResource(R.drawable.anyImage)

Parámetros

Parámetro Descripción
resId el nombre de su archivo de imagen en la carpeta res (generalmente en una carpeta drawable )

Establecer recurso de imagen

<ImageView
 android:id="@+id/imgExample"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 ...
 />

establece un dibujable como contenido de ImageView usando el atributo XML:

android:src="@drawable/android2"  

establecer un dibujo programable:

 ImageView imgExample = (ImageView) findViewById(R.id.imgExample);
 imgExample.setImageResource(R.drawable.android2);

Establecer alfa

"alfa" se utiliza para especificar la opacidad de una imagen.

establece alfa usando el atributo XML:

android:alpha="0.5"  

Nota: toma el valor flotante de 0 (transparente) a 1 (totalmente visible)

Establecer alfa programáticamente:

imgExample.setAlpha(0.5f);

introduzca la descripción de la imagen aquí

ImageView ScaleType - Centro

Es posible que la imagen contenida en ImageView no se ajuste al tamaño exacto dado al contenedor. En ese caso, el marco le permite cambiar el tamaño de la imagen de varias maneras.

Centrar

    <ImageView android:layout_width="20dp"
           android:layout_height="20dp"
           android:src="@mipmap/ic_launcher"
           android:id="@+id/imageView"
           android:scaleType="center"
           android:background="@android:color/holo_orange_light"/>

Esto no cambiará el tamaño de la imagen y la centrará dentro del contenedor (Naranja = contenedor)

Centrar

En caso de que el ImageView sea más pequeño que la imagen, la imagen no se redimensionará y solo podrá ver una parte de ella.

Centro de la imagen más grande que imageView

texto fuerte

ImageView ScaleType - CenterCrop

Escale la imagen uniformemente (mantenga la relación de aspecto de la imagen) de modo que ambas dimensiones (ancho y alto) de la imagen sean iguales o más grandes que la dimensión correspondiente de la vista (menos el relleno).

Documentos oficiales

Cuando la imagen coincide con las proporciones del contenedor:

introduzca la descripción de la imagen aquí

Cuando la imagen es más ancha que el contenedor, la expandirá al tamaño más grande (en este caso, la altura) y ajustará el ancho de la imagen sin cambiar sus proporciones, lo que provocará que se recorte.

introduzca la descripción de la imagen aquí

ImageView ScaleType - CenterInside

Escale la imagen uniformemente (mantenga la relación de aspecto de la imagen) de modo que ambas dimensiones (ancho y alto) de la imagen sean iguales o menores que la dimensión correspondiente de la vista (menos el relleno).

Documentos oficiales

Centrará la imagen y la redimensionará al tamaño más pequeño. Si ambos tamaños de contenedor son más grandes, actuará de la misma manera que el centro.

centro dentro de 1

Pero si uno de los tamaños es pequeño, se ajustará a ese tamaño.

centro interior 2

ImageView ScaleType - FitStart y FitEnd

Escala la imagen usando START.

Escala la imagen usando FIN.

Documentos oficiales

FitStart

Esto se ajustará al tamaño más pequeño del contenedor y lo alineará con el inicio.

<ImageView android:layout_width="200dp"
           android:layout_height="200dp"
           android:src="@mipmap/ic_launcher"
           android:id="@+id/imageView"
           android:scaleType="fitStart"
           android:layout_gravity="center"
           android:background="@android:color/holo_orange_light"/>

encajar en la parte superior

ajuste a la izquierda

FitEnd

Esto se ajustará al tamaño más pequeño del contenedor y lo alineará hasta el final.

<ImageView android:layout_width="200dp"
           android:layout_height="100dp"
           android:src="@mipmap/ic_launcher"
           android:id="@+id/imageView"
           android:scaleType="fitEnd"
           android:layout_gravity="center"
           android:background="@android:color/holo_orange_light"/>

ajuste a la parte inferior

ajustarse a la derecha

ImageView ScaleType - FitCenter

Escala la imagen usando CENTRO.

Documentos oficiales

Esto expande la imagen para tratar de coincidir con el contenedor y la alineará con el centro, se ajustará al tamaño más pequeño.

Altura mayor (ajuste al ancho)

introduzca la descripción de la imagen aquí

Mismo ancho y altura.

introduzca la descripción de la imagen aquí

ImageView ScaleType - FitXy

Escala la imagen usando FILL.

Documentos oficiales

<ImageView android:layout_width="100dp"
           android:layout_height="200dp"
           android:src="@mipmap/ic_launcher"
           android:id="@+id/imageView"
           android:scaleType="fitXY"
           android:layout_gravity="center"
           android:background="@android:color/holo_orange_light"/>

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Establecer el tipo de escala

Controla cómo se debe cambiar el tamaño de la imagen o moverla para que coincida con el tamaño de ImageView .

Atributo XML:

android:scaleType="..."

Ilustraré diferentes tipos de escalas con un ImageView cuadrado que tiene un fondo negro y queremos mostrar un dibujo rectangular en un fondo blanco en ImageView .

 <ImageView
  android:id="@+id/imgExample"
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:background="#000" 
  android:src="@drawable/android2"
  android:scaleType="..."/>

scaleType debe ser uno de los siguientes valores:

  1. center : center la imagen en la vista, pero no realiza ninguna escala.

introduzca la descripción de la imagen aquí

  1. centerCrop : escala la imagen de manera uniforme (mantiene la relación de aspecto de la imagen) de modo que ambas dimensiones (ancho y alto) de la imagen sean iguales o mayores que la dimensión correspondiente de la vista (menos el relleno). La imagen se centra entonces en la vista.

introduzca la descripción de la imagen aquí

  1. centerInside : escala la imagen uniformemente (mantiene la relación de aspecto de la imagen) de modo que ambas dimensiones (ancho y alto) de la imagen sean iguales o menores que la dimensión correspondiente de la vista (menos el relleno). La imagen se centra entonces en la vista.

introduzca la descripción de la imagen aquí

  1. matrix : Escala usando la matriz de la imagen al dibujar.

introduzca la descripción de la imagen aquí

  1. fitXY : Escala la imagen usando FILL .

introduzca la descripción de la imagen aquí

  1. fitStart : escala la imagen usando START .

introduzca la descripción de la imagen aquí

  1. fitCenter : escala la imagen usando CENTRO .

introduzca la descripción de la imagen aquí

  1. fitEnd : Escala la imagen usando END .

introduzca la descripción de la imagen aquí

Establecer tinte

Establecer un color de tintado para la imagen. Por defecto, el tinte se SRC_ATOP usando el modo SRC_ATOP .

establecer tinte usando el atributo XML:

android:tint="#009c38"

Nota: debe ser un valor de color, en forma de "#rgb" , "#argb" , "#rrggbb" o "#aarrggbb" .

establecer tinte programáticamente:

imgExample.setColorFilter(Color.argb(255, 0, 156, 38));

y puedes borrar este filtro de color:

imgExample.clearColorFilter();

Ejemplo:

introduzca la descripción de la imagen aquí

MLRoundedImageView.java

Copia y pega la siguiente clase en tu paquete:

public class MLRoundedImageView extends ImageView {

    public MLRoundedImageView(Context context) {
        super(context);
    }

    public MLRoundedImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MLRoundedImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        Drawable drawable = getDrawable();

        if (drawable == null) {
            return;
        }

        if (getWidth() == 0 || getHeight() == 0) {
            return;
        }
        Bitmap b = ((BitmapDrawable) drawable).getBitmap();
        Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);

        int w = getWidth(), h = getHeight();

        Bitmap roundBitmap = getCroppedBitmap(bitmap, w);
        canvas.drawBitmap(roundBitmap, 0, 0, null);

    }

    public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
        Bitmap sbmp;
        
        if (bmp.getWidth() != radius || bmp.getHeight() != radius) {
            float smallest = Math.min(bmp.getWidth(), bmp.getHeight());
            float factor = smallest / radius;
            sbmp = Bitmap.createScaledBitmap(bmp, (int)(bmp.getWidth() / factor), (int)(bmp.getHeight() / factor), false);
        } else {
            sbmp = bmp;
        }
        
        Bitmap output = Bitmap.createBitmap(radius, radius,
                Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        final int color = 0xffa19774;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, radius, radius);

        paint.setAntiAlias(true);
        paint.setFilterBitmap(true);
        paint.setDither(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(Color.parseColor("#BAB399"));
        canvas.drawCircle(radius / 2 + 0.7f,
                radius / 2 + 0.7f, radius / 2 + 0.1f, paint);
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(sbmp, rect, rect, paint);

        return output;
    }
}

Utilice esta clase en XML con el nombre del paquete en lugar de ImageView

<com.androidbuts.example.MLRoundedImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow