Ver la Versión Completa : Adaptar ImageView a distintas resoluciones
danipro1993
17/09/15, 09:42:14
Buenos días,
estoy teniendo problemas con el desarrollo de una aplicación, resulta que tengo una lista de opiniones, donde se ve la imagen de perfil de los usuarios que se descarga por una URL usando la librería Universal ImageLoader. Una vez descargada la re-dimensiono a 150 x 150 y la establezco en el siguiente ImageView:
<Componentes.RoundImageView
android:id="@+id/iconUsuario"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/usericon5"/>
En las pantallas con resolución 720px se ve perfectamente el problema es cuando ejecuto la aplicación en otro dispositivo con menor resolución, la imagen se ve bien pero muy grande.
¿Como puedo hacer que la imagen tenga las mismas proporciones tanto en una pantalla de 720 como en otra con menor resolución?
Saludos
rafaxplayer
17/09/15, 09:47:13
utiliza dimensiones diferentes para cada resolución con el archivo dimes.xml en drawable, drawable-large,drawable-xlarge, etc..
Infórmate sobre eso.
danipro1993
17/09/15, 10:04:12
Muchas gracias por responder, voy a informarme, cuando comentas "utiliza dimensiones diferentes" te refieres al width y al height verdad?
Saludos
javichechu
17/09/15, 15:04:03
Echa un vistazo a la librería Picasso para Android. Entre otras utilidades tiene la redimensión de imágenes.
danipro1993
18/09/15, 09:26:43
Muchas gracias por las respuestas ya he conseguido adaptarlo usando el archivo dimens.xml y adaptando la imagen que descarga por URL según los dp configurados en el dimen.xml
Javichechu me apunto la librería para echarle un vistazo.
Saludos y muchas gracias.
Hola danipro1993, puedes poner un ejemplo de como lo hiciste? Estoy en el mismo caso que tu, y he encontrado como descargarlo y elegir el tamaño que le quieres poner en pixeles, pero no termino de ver como usar los valores con los dp establecidos en el fichero dimens.xml...
Gracias!
danipro1993
22/10/15, 09:34:15
Hola Kete_, perdona por tardar en responder, te comento como lo hize:
aparte de definir las distintas carpetas (xhdpi,hdpi,mpi...) he usado la libreria imageloader, esta librería tiene un método que es cuando termina de descargar la imágen, en este método se redimensiona la imágen usando la libreria thumbhailutils.
Aquí te dejo el código, con los dpi se obtiene la densidad de pantalla
ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options;
ImageLoadingListener imageListener;
options = new DisplayImageOptions.Builder()
.showImageOnFail(R.drawable.ami)
.showStubImage(R.drawable.ami)
.showImageForEmptyUri(R.drawable.ami).cacheInMemor y()
.cacheOnDisc()
.postProcessor(new BitmapProcessor() {
override
public Bitmap process(Bitmap bitmap) {
Bitmap bmThumbnail = null;
DisplayMetrics metrics = activity.getResources().getDisplayMetrics();
float dpi = metrics.density;
if(dpi == 2 || dpi == 3 || dpi == 4)
{
bmThumbnail = ThumbnailUtils.extractThumbnail(bitmap, 200, 200);
}else if(dpi == 1.5){
bmThumbnail = ThumbnailUtils.extractThumbnail(bitmap, 112, 112);
}else if(dpi < 1.5){
bmThumbnail = ThumbnailUtils.extractThumbnail(bitmap, 50, 50);
}
return bmThumbnail;
}
}).build();
saludos, espero haberte ayudado.
kriogeN
22/10/15, 09:47:28
Es más simple, en vez de wrap_content establece los tamaños a 150dp, porque es el tamaño que siempre vas a querer independientemente de la resolución.
Luego en el constructor de tu clase RoundImageView (que supongo que hereda de ImageView) establece que su ScaleType sea CENTER_INSIDE.
Haciendo esto ya no hace falta que te preocupes por redimensionar tu imagen, lo hará el ImageView por ti.
danipro1993
22/10/15, 10:22:44
Gracias Kriogen, lo pruebo haber que tal.
muchas gracias
androizado
27/10/15, 15:21:23
@kriogeN (http://www.htcmania.com/member.php?u=381391), yo uso la librería de Picasso, pero en algunas resoluciones hay imágenes que se me iban. Pero nunca he llegado a probar ese método.
Gracias por el consejo.
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.