Android中的9补丁图片错误

Heb*_*ber 58 android nine-patch aapt

每当我尝试将9补丁图像添加到\drawable项目中的文件夹时,我都会收到同样的错误:

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
Run Code Online (Sandbox Code Playgroud)

这个例子中的奇怪之处在于我从SDK资源中找到的"android-g1-icon"图像中获得了这个图像,所以它应该没问题.到目前为止,我尝试过的任何9补丁图像都是如此.可能有什么不对?

小智 32

我在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.
Run Code Online (Sandbox Code Playgroud)

这就是我解决它的方法:在Android Sdk目录下打开draw9patch工具

cd /Android/sdk/tools
./draw9patch
Run Code Online (Sandbox Code Playgroud)

打开.9 png并再次保存.希望能帮助到你.

  • 谢谢!如果您使用的是Android Studio,只需打开此图片并保存(Android Studio会自动使用draw9patch工具). (2认同)

cha*_*ity 23

这是最新的ADT 20.0.3的问题.您可以将*.9.png重命名为*.png并开始工作.

我认为这只是ADT的错误,因为对于18.0.0版本的ADT,它不会提示此类错误并且工作正常.

  • 从文件名中删除.9允许应用程序运行但不是解决方法,因为它有效地删除拉伸区域使其与原始文件相同. (3认同)

Reu*_*ton 11

资源编译器剥离9个补丁一个像素的边界(并且可能在.9.png文件之外以更有效的方式存储从它们获得的信息).如果您从.apk中捕获了这些.9.png文件,则需要手动添加边框.

  • 我从Google_Keyboard.apk中获取了一些.9.png图片并遇到了同样的问题.你能详细解释一下如何自己添加边框吗? (2认同)

Mot*_*tov 8

当我将项目表单Eclipse迁移到Android Studio时,我遇到了同样的问题.

你需要做的是,从图像文件名中删除.9,然后在draw9patch工具(位于/ sdk/tools目录中)中打开它,现在,单击右上角的Show Bad Patches按钮.

然后,您应该看到标记为红色的坏像素和区域,您需要在那里做一些工作,直到您没有红色坏块.对我来说,我只在中间左边缘标记了一个像素,在中间上边缘标记了一个像素,并且几乎标记了所有右边缘和底边缘.再次单击按钮,看到您没有错误的补丁.

将文件另存为.9.png并将其放回项目的res文件夹中.然后,Android Studio应该为9个补丁程序构建您的项目没有问题.


bra*_*ey4 5

就我而言,我错误地将黑色边框扩展到了左上角。确保角落是透明的。