9 Patch png背景不正确地工作了。

3

我正在尝试为我的应用创建一个背景图片,以便在所有分辨率/方向上都能呈现清晰的效果。

我是 Android 开发的新手,但我了解实现这一目标的最简单方法是使用 9 像素图片。我原本认为我知道它们的工作原理,但我无法让它正常工作。

我已经创建了一张背景图片 @ 768 x 1280,这是 Nexus 4 的分辨率。当我没有使用 9 像素图片并在设备上查看时,它看起来很好(显然,因为分辨率/方向与设备匹配):

enter image description here

所以它看起来很好也很清晰。

但是,当我使用 drawer9patch.bat 文件添加补丁到图像并将文件重命名为 '.9.png' 后,结果如下:

enter image description here

糟糕极了!

奇怪的是:在 draw9patch 工具右侧的预览窗格中,所有东西看起来都很好....

我还尝试过以较小的分辨率制作图像,但徽标和文本看起来不够清晰;它们看起来像素化了...

我感觉一定有一些重要的细节我没有理解?我定义为内容的区域被拉伸了吗?

这是我的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/my_background_image_patched"
    android:padding="0px">
<!-- Login controls here --->
</RelativeLayout>

这是我的9个插图(位于“drawable”文件夹中):

输入图片描述


是的,抱歉我刚看到它所以删除了评论。图片看起来还不错。请告诉我你把它放在哪里(res文件夹名称)。 - Yaroslav Mytkalyk
另一方面,我建议为整个图像添加底部填充区域。为什么只在拉伸线上有垂直填充?我会将其设置为全高度。 - Yaroslav Mytkalyk
它在“drawable”文件夹中。 - David Masters
最好将其放在相应的密度文件夹或drawable-nodpi中,如果它用于应用程序密度。我没有看到任何明显的错误,所以我不确定。如果我是你,我会尝试按照上面的评论添加填充。也许这就是缺少填充区域的处理方式。 - Yaroslav Mytkalyk
拉伸标记是顶部和左侧的黑色像素。右侧/底部的黑色像素标记填充区域。我建议将9个补丁的右边和底边填满黑色像素(例如,使图像完全填充)。 - Yaroslav Mytkalyk
显示剩余2条评论
2个回答

7

好的,我修改了你的9宫格图案。
需要指出的是它设计得很差(72dpi),实际上应该是320dpi。

所以,我重新设计了它(你可以看到我移动了黑色像素),并将它保存为320dpi(在drawable-xhdpi文件夹中)。

它似乎在ldpi和mdpi屏幕上缩放得很好(所以我猜它也会在hdpi上缩放得很好):

enter image description here

我使用的图案是这个:

enter image description here


谢谢。问题已解决! - David Masters
非常让人烦恼的是,我正在使用微软表现设计来创建图像,但它只支持300dpi的限制!所以我无法创建320dpi的图像:\ - David Masters
1
使用我的吧...它已经是320 dpi了。将来,你可以使用Paint.net(免费软件)或Gimp(也是免费软件)(我现在太忙了,无法在Google上查找,但你只需要5秒钟就能找到)。 - Phantômaxx
好主意。我可以将我的向量从表达式复制到Paint.net @ 320dpi =) - David Masters
工具箱里的新工具!;) - Phantômaxx

3
尝试使用这个Nine-patch生成器来生成Nine-Patch图像,它能够根据指定的源艺术品在不同屏幕密度下快速生成简单的Nine-Patch图像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接