He subido una imagen de 3000 por 3000 píxeles en Android Studios.

Cuando intento agregar la imagen a mi aplicación, la imagen no se ve nítida.

enter image description here

Aquí está mi código XML

 <ImageView
   android:layout_width="match_parent"
   android:layout_height="200dip"
   android:scaleType="fitCenter"
   android:contentDescription=""
   android:layout_marginTop="20dip"
   android:layout_marginBottom="28dip"
   android:src="@mipmap/login_logo" />

Creo que mi imagen debería ser lo suficientemente grande para la vista de imagen. ¿Alguien puede aconsejarme sobre cómo aumentar la resolución de mi imagen?

Actualizado

Cuando subí la imagen, las 4 versiones diferentes de la imagen se crearon automáticamente en el sistema.

enter image description here

1
Zhen 29 ago. 2016 a las 10:50

2 respuestas

La mejor respuesta

El problema es que está creando un conjunto de iconos, que en realidad no tiene 3000 por 3000 píxeles. Revisalo.

La aplicación está usando el tamaño más apropiado (hdpi, xhdpi, etc.). Pero está cambiando el tamaño manualmente. Es por eso que el ícono no es nítido en la pantalla.

Cuando crea un activo de imagen manual, este es el tamaño real según el tamaño de la pantalla. El asistente toma la imagen original y la redimensiona.

ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi

En píxeles:

36x36 (0.75x) for low-density
48x48 (1.0x baseline) for medium-density
72x72 (1.5x) for high-density
96x96 (2.0x) for extra-high-density
144x144 (3.0x) for extra-extra-high-density
192x192 (4.0x) for extra-extra-extra-high-density

Puede resolverlo creando su activo de imagen personalizado siguiendo estas instrucciones:

LDPI - 0.75x
MDPI - Original size you want to show
HDPI - 1.5x
XHDPI - 2.0x
XXHDPI - 3x
XXXHDPI - 4.0x

https://developer.android.com/guide/practices/screens_support.html

O puede usar una biblioteca externa, como Picasso, para cargar la imagen original y ajustarla. El resultado será más profesional en la medida en que pueda ajustar dinámicamente, usar marcadores de posición, imagen de error, etc.

https://www.google.es/?ion=1&espv=2#q=picasso%20android

Picasso.with(getActivity())
    .load(new File("path-to-file/file.png"))
    .into(imageView);
2
adalpari 29 ago. 2016 a las 08:33

Sugiero un método que se usa en la función onCreate (). Usó BitmapFactory para cargar tu imagen

Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap source = BitmapFactory.decodeResource(a.getResources(), path, options);
ImageView mImg;
mImg = (ImageView) findViewById(R.id.imageView);
mImg.setImageBitmap(source);
1
Jame 29 ago. 2016 a las 08:03