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.
- ¿Cómo puedo configurar el ancho de los botones de radio para cambiar con respecto al tamaño de la pantalla? (androide)
- Cómo determinar qué recurso de mapa de bits se ha cargado (ldpi, mdpi o hdpi)?
- Cómo calcular dp de píxeles en android programaticamente
- Mover sprite en Andengine
- ¿Cómo diferenciar el diseño para 480 * 800 y 480 * 854 resoluciones de pantalla en android?
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
- ¿Cómo encontrar Intent source en Android?
- Galaxy Tab 10.1 resolución de pantalla utilizable (- la barra de menú)
- Android y el soporte de múltiples diseños de pantallas
- Android Emulator informa de 600x1024 MDPI como XLarge?
- Cómo escalar mapas de bits en View.Canvas en Android?
- ¿Qué resoluciones de aplicaciones para Android son compatibles?
- Android - ¿hay una manera de definir la resolución de vídeo cuando se toma video de la aplicación?
- ¿Cómo sé cuánto DPI tiene el dispositivo?
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).