9补丁图像在错误位置被缩放。

5
我正在使用一个点九图作为选择器元素的可绘制对象。 点九图如下图所示: 9 patch image 最终呈现的图像如下(模拟器和设备截图,两个设备的分辨率都大于 mdpi): resulting rendered image 从图中可以看出,它已经在可伸缩区域外缩放(如 9 patch 文件中定义的那样),较深的绿色条比应有的要厚得多。 为什么会这样,能避免吗?draw9patch 工具可以正确地缩放此图像。这是否与 Android 尝试在高分辨率设备上保持物理尺寸有关?

让我们来看看你绘制图像的代码。 - Caerulius
2个回答

6

你只提供了mdpi版本的图片吗?

在Android中,所有不符合正确像素密度的图像都会被缩放。这种情况发生在图像通过9patch进行缩放之前。

这意味着你的图片会被缩放以适应hdpi,并且再次被缩放以适应内容。

要解决此问题,您需要提供hdpi和xhdpi版本的图像。 9patch并不针对不同像素密度而是针对不同的内容/屏幕尺寸。


只有一个版本(放在drawable文件夹中)。所以,你概述的过程似乎解释了我面临的问题。太糟糕了,我本以为可以避免为所有不同的物理分辨率创建图像... - user462982

3

我查看了你的9-patch图片:

enter image description here

为什么你把未使用区域涂成白色?它应该是透明的。 因为这个原因,它不能被识别为9-patch图片:

enter image description here


白色边框是我的个人最佳实践,因为它避免了几乎透明的像素存在于外部边框上。到目前为止,我从未与此遇到过问题。我进行了双重检查:红色条纹(无论其意义如何)也会出现在完全透明的边框上。 - user462982

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