Tamaños extraíbles de los androides cambia en la pantalla al leer la imagen del archivo

Tengo una imagen en un archivo privado. Leo el archivo, crear el dibujable, y asignarlo a un ImageView. El ImageView tiene WRAP_CONTENT por lo que el tamaño es automático.

En las pantallas de 320×480, la imagen se ve bien, pero en las pantallas con más resolución y alta densidad 480×800 o 480×854 (N1, droid), cuando la imagen es por ejemplo 150×150, veo la imagen como 100×100.

Por supuesto que tiene algo que ver con la densidad, pero no estoy seguro de cómo debo resolver esto.

Este es mi código:

FileInputStream fis = this.openFileInput("icon.png"); icon = Drawable.createFromStream(fis, "icon"); fis.close(); imageView.setImageDrawable(icon); 

Gracias

============================================================================== Unesdoc.unesco.org unesdoc.unesco.org

actualizar:

Con el siguiente código:

FileInputStream fis = this.openFileInput ("icono.png");

Icon = Drawable.createFromStream (fis, "icono");

Si entonces compruebo el tamaño del icono, android piensa que el tamaño es 100×100, cuando realmente es 150×150.

Parece que su reducción de la imagen por la densidad. ¿Puede alguien explicar esto y cómo evitar esto.

Gracias

Cambie la escala de la imagen a la dimensión deseada:

  d = Drawable.createFromPath(filePath); if (d != null) { Bitmap bitmapOrg = ((BitmapDrawable) d).getBitmap(); int width = bitmapOrg.getWidth(); int height = bitmapOrg.getHeight(); int newWidth = 170; int newHeight = 170; // calculate the scale float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // create a matrix for the manipulation Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(scaleWidth, scaleHeight); Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width, height, matrix, true); // make a Drawable from Bitmap to allow to set the BitMap d = new BitmapDrawable(resizedBitmap); } 

Estoy trabajando en un problema similar, pruebe esto:

 TypedValue typedValue = new TypedValue(); //density none divides by the density, density default keeps the original size typedValue.density = TypedValue.DENSITY_DEFAULT; Drawable d = Drawable.createFromResourceStream(null, typedValue, fis, "icon"); 

Todavía estoy trabajando a través de cómo desarrollar una solución general para recoger imágenes de resolución / redimensionamiento de un flujo genérico en lugar de los directorios drawable *.

Pruebe BitmapDrawable # setTargetDensity:

 Bitmap b = BitmapFactory.decodeFile(path) BitmapDrawable bmd = new BitmapDrawable(b); bmd.setTargetDensity(getResources().getDisplayMetrics()); 

Establezca algunas dimensiones en píxeles independientes del dispositivo (o DIP).

  • Android visualiza la transformación de rotación 3D en pantallas de gran resolución
  • Android xxxhdpi resolución extraíble auto redimensionar
  • ¿Cuál es el tamaño óptimo de bitmap para las carpetas ldpi / mdpi / hdpi / xhdpi extraíbles?
  • Qt Android. Obtener resolución de pantalla del dispositivo
  • La mayoría de los tamaños de pantalla populares / resoluciones en los teléfonos Android
  • Convertir píxeles en dp
  • Carpetas dibujables para computadoras de mano de alta resolución
  • Diseño para Android - ¿Resolución?
  • ¿Cómo hacer una resolución de cámara independiente de vista previa en Android?
  • ¿Qué resolución debería tener mi pantalla de bienvenida de Android?
  • Android - Google Play filtrando xxhdpi
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.