Creé una Vista personalizada extendiendo desde la Vista. En onDraw() logré dibujar algunos círculos y otras cosas. Pero ahora quiero agregar un fondo de un recurso (tarjeta SD o una secuencia) que en realidad es un mapa que descargo de nuestro servidor y que dibujo sobre él. Es para Android 8+Fondo del dibujo de la vista personalizada desde el archivo .png en Android
@Override
protected void onDraw(Canvas canvas) {
Canvas g = canvas;
String file = "/mnt/sdcard/download/tux.png";
Bitmap bg = null;
try {
bg = BitmapFactory.decodeFile(file);
g.setBitmap(bg);
} catch (Exception e) {
Log.d("MyGraphics", "setBitmap() failed according to debug");
}
}
De alguna manera g.setBitmap (BG) sigue fallando, no he visto las especificaciones técnicas de imagen, pero en realidad es sólo una imagen de Tux (hay 24 bits de colores) de formato PNG. ¿Puede alguien darme algunos consejos sobre cómo agregar una imagen de fondo para poder dibujar sobre ella? Gracias.
Martin, Muchas gracias por este claro ejemplo. ¡Qué extraño que ya hice tu primer ejemplo y de alguna manera no funcionó! Ahí es donde comencé a perderme. El segundo se está estirando para encajar en el aspecto inmobiliario de la vista, eso es exactamente lo que finalmente tuvo. Pero a su primero me gusta mucho, así puedo posicionar la imagen sin modificar su tamaño. – AndaluZ
Cuando prueba mi primer ejemplo, ¿qué es exactamente lo que no funciona? Una excepción (en caso afirmativo, ¿qué excepción)? Nada se dibuja en la pantalla? ¿En qué versión de Android estás corriendo? ¿Puede proporcionar el código exacto que usa que espera que funcione, pero no es así? –
Funciona mi amigo, con .png y .jpg. Después de su publicación todavía estaba jugando y probando algunas imágenes y descubrí que no todos los archivos .jpeg funcionan. Cuando uso imágenes pequeñas de jpg como 50 KB, funciona, pero cuando utilizo imágenes jpg más grandes, como 600 KB, el fondo se vuelve completamente blanco. No sé si tiene que ver con el tamaño de la imagen, porque aquellos que no funcionan tienen un tamaño mucho más grande que el de mi vista. El uso de setBackgroundDrawable() funciona, pero también se reduce al tamaño de la propiedad de la Vista. – AndaluZ