studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android nine-patch aapt

para - manual de programacion android pdf



Error de imagen de 9 parches en Android (14)

Cada vez que trato de agregar una imagen de 9 parches a la carpeta /drawable en mi proyecto, obtengo el mismo error:

ERROR: 9-patch image C:/.../res/drawable/appwidget.9.png malformed. Frame pixels must be either solid or transparent (not intermediate alphas). Found at pixel #3 along top edge. Failure processing PNG image C:/.../res/drawable/appwidget.9.png

Lo extraño de este ejemplo es que obtuve esta imagen de las imágenes "android-g1-icon" que se encuentran en los recursos del SDK, por lo que se supone que está bien. Lo mismo sucedió con cualquier imagen de 9 parches que he probado hasta ahora. ¿Qué podría estar mal?


Ahora hay dos crunchers PNG en la herramienta de compilación de Android, AAPT y un cruncher de Java. Ambos comprueban si hay 9 imágenes mal formadas.

Revisé el código fuente de la herramienta de compilación. No hay ninguna opción para desactivar la compresión en la imagen de parche 9 o ignorar las malformadas. Al menos no hay opciones disponibles para los usuarios.

Así que aquí hay un script simple para reemplazar AAPT:

https://gist.github.com/ksc91u/37513796b2cec37bb3c5

Cuando se llame para comprimir una imagen de 9 parches, simplemente copiará el archivo, de lo contrario, lanzará el AAPT real con @ARGV.


Cuando aparece el error, también abre la imagen en el estudio de Android. Todo lo que hice para arreglar esto fue extender cualquiera de los bordes del parche por un solo píxel dibujado. Volví a ejecutar y funcionó. No estoy seguro por qué, pero repito lo probé con varias imágenes.


Cuando aplicamos parche a cualquier imagen, crea una línea negra en su borde. Ese borde debe ser transparente o completamente sólido. Si no es así, este error vendrá.

Entonces la solución es aumentar el ancho y la altura en dos píxeles. (En Photoshop, aumente el tamaño del lienzo, no la imagen).


El compilador de recursos elimina 9-parches de un píxel de los bordes (y presumiblemente almacena la información obtenida de ellos de una manera más eficiente fuera del archivo .9.png). Si ha extraído estos archivos .9.png de una .apk, deberá volver a agregar el borde a mano.


En mi caso, extendí por error el borde negro en la esquina superior izquierda. Asegúrate de que las esquinas sean transparentes.


Encontré que el problema es sobre * .9.png archivos. Abra y compruebe todos sus archivos de 9 parches, asegúrese de que todos los archivos tengan un borde negro de 1 píxel de ancho, si no tiene, simplemente haga clic en el lugar blanco y agréguelo, luego guárdelo.

Es la única solución a mi problema.


Este es el problema con el último ADT que es 20.0.3. En su lugar, puede cambiar el nombre de * .9.png a * .png y comenzar a trabajar.

Creo que este es el error con el ADT solamente, ya que para la versión 18.0.0 ADT no solicita este tipo de error y funciona bien.


Lo resolví cambiando el alcance de estiramiento en Android Studio.


Me he encontrado con el mismo problema en Android Studio:

AAPT out(943142208) : No Delegate set : lost message:Done AAPT err(943142208): ERROR: 9-patch image /Users/cartman/Github/UteacherAndroid/RefactorDemo/app/src/main/res/drawable-xxhdpi/nav_shabow.9.png malformed. AAPT err(943142208): Frame pixels must be either solid or transparent (not intermediate alphas). AAPT err(943142208): Found at pixel #1 along left edge.

Así es como lo resolví: abra la herramienta draw9patch en su directorio Android Sdk

cd /Android/sdk/tools ./draw9patch

Abre .9 png y guárdalo de nuevo. Espero eso ayude.


Para mí, el problema parece ser que yo mismo creé el parche 9. Pensé que era suficiente tener un borde de 1 px en los bordes izquierdo y superior, pero debes asegurarte de que la imagen tenga un borde de 1 px en cada borde.


Si está creando la imagen con una herramienta de generador en línea, debe eliminar los caracteres especiales del nombre para que funcione.


Solo para el registro: para mí resultó que este error vino de una línea negra en el lado derecho y el lado inferior. Así que tenía un borde negro en cada lado (arriba, derecha, abajo e izquierda). Eliminar el derecho redundante y la línea inferior funcionó como un amuleto.


Tu parche de 9 puede estar equivocado.

Tal vez quites 9 parches de un píxel y la información obtenida de ellos no esté disponible. Intente agregar una línea inferior y una línea derecha para el texto también. Creo que te ayudará a resolver tu problema.


Tuve el mismo problema cuando migré un proyecto de Eclipse a Android Studio.

Lo que debe hacer es eliminar .9 del nombre del archivo de imagen y luego, abrirlo en la herramienta draw9patch (ubicada en su directorio / sdk / tools) y ahora, hacer clic en el botón Mostrar parches defectuosos en la esquina superior derecha.

Debería ver los píxeles defectuosos y las áreas marcadas en rojo, debe trabajar allí hasta que no tenga parches rojos defectuosos. Para mí, acabo de marcar un píxel en el borde medio izquierdo, y un píxel en el borde superior medio, y marqué casi todo el borde derecho y el borde inferior. haga clic en el botón nuevamente y vea que no tiene parches defectuosos.

Guarde el archivo como .9.png y vuelva a colocarlo en la carpeta de res de su proyecto. Android Studio debería construir su proyecto sin problemas para 9 patch iamges.