android.graphics.Picture que no está dibujado en API 14+
Cuando cambio el targetAPI en el manifiesto de 13 a 14 (o más alto) la imagen ya no funciona. No importa qué o cómo.
Ejemplo
- Algoritmo Floodfill en Android
- Cambiar el fondo del botón alfa sin cambiar el valor del alfabeto del texto en Android?
- ¿Una función sdk nativa para escalar Bitmap?
- Android drawBitmap 5x diferencia de rendimiento
- ¿Existe alguna desventaja en el uso de sólo recursos de imágenes de alta resolución para una aplicación de Android?
Paint bluepaint = new Paint(); bluepaint.setColor(Color.BLUE); Picture pic = new Picture(); Canvas testcanvas = pic.beginRecording(300, 300); testcanvas.drawColor(Color.BLUE); pic.endRecording(); canvas.drawColor(Color.RED); canvas.drawLine(0, 0, 480, 480, bluepaint); canvas.drawPicture(pic);
Esto debería dibujar una pantalla azul de la imagen, lo hace en API 13 y menor. No dibuja el azul pero solamente el rojo de la llamada pura de canvas.draw.
No puedo ver ningún cambio de API 13 a 14 que explicaría esto.
Sin embargo, estoy utilizando cyanogenmod en un Galaxy S2 (por lo que puede ejecutar 4.3), no estoy seguro de si cambian las cosas nativas en cianógeno, cambió a él hace un par de semanas.
¿Alguna idea de dónde buscar respuestas o qué podría causar esto?
editar
trabajando
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="13" />
No funciona
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="14" />
- La manera más eficiente de dibujar objetos idénticos múltiples?
- ¿Cómo hacer gráficos de estadísticas agradables en Android?
- Gráficos basados en XML versus png drawables?
- ¿Diferencia entre SurfaceView y View?
- Desarrollo de juegos de plataforma cruzada utilizando html5
- 2D API o OpenGL ES para un juego de Android 2D?
- Android - SurfaceView parpadea ya veces no aplica la pintura adecuada
- Android Canvas o Open GL ES para el juego 2d?
Si targetSdkVersion
es 14 (Ice Cream Sandwich) o superior, la aceleración de hardware está habilitada de forma predeterminada para toda la aplicación. Lamentablemente Canvas.drawPicture()
no es compatible si la aceleración de hardware está habilitada .
Hay dos maneras de arreglar esto:
-
Añadir
android:hardwareAccelerated="false"
a la etiqueta de laapplication
en su AndroidManifest.xml. Esto desactivará la aceleración de hardware para toda la aplicación. -
Puede utilizar
Bitmap
yCanvas.drawBitmap()
que se admite con aceleración de hardware.
Referencia: http://developer.android.com/guide/topics/graphics/hardware-accel.html
- Tamaño de fuente a grande para caber en caché para Emoji en Kitkat solamente
- Evento de rueda de mouse en Adobe Air para Android (intentando escribir Adobe Native Extension)