2013-05-13 154 views
3

我的问题就像标题所说:为什么我们需要9贴片图像?他们真的很重要吗?其实,他们真的在做什么?我没有清楚地理解9贴片图像的概念。为什么我们需要9补丁?

我知道9-patch图像是可缩放的。所以我们可以说我有一些图像按钮非常适合我的ldpi设备。使用Draw 9-patch工具(android SDK的一部分),我可以标记可伸缩区域,这个图像很适合hdpi甚至xhdpi设备。边缘会很好,很平滑。

但是,这是一个很好的实践或只是一个替代? 我应该为ldpi,mdpi,hdpi和xhdpi设备创建每个图像,还是我可以在一个图像上使用Android SDK“绘制9个补丁”并让Android处理各种设备?

我不是关于边缘的那个束缚,而是图片的实际内容。内容是否可扩展?

+3

请阅读本文件。 http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch – 2013-05-13 12:07:28

+0

对于图像的确切尺寸,您将使用它。 Android提供在线图像转换,即屏幕密度以支持不同的尺寸。 http://android-ui-utils.googlecode.com/hg/asset-studio/dist/nine-patches.html希望这可能有助于你。 – Shadow 2013-05-13 12:22:16

回答

5

内容是可缩放的,在典型用法中边缘不会缩放。

它们通常用于背景到按钮或其他屏幕装饰,其中缩放内容可以无限缩放而不会丢失分辨率

理想的情况下,他们除了使用到适当的密度依赖资源,使资源的部分(你没有明确说明是可扩展的)不增大尺寸,并随后像素化。

考虑Android上的Kindle应用程序的启动画面,该应用程序具有该男孩在树上阅读的轮廓。在一个简化的版本中,地面可以水平无限缩放,但是如果这个男孩被缩放,他会出现倾斜。所以你可以使用九个补丁并指定可以缩放的部分以及在哪个方向。

虽然这还不够 - 如果您只包含低分辨率资源,那么如果设备显示密度较高,则资源最初仍会放大。在这种情况下,这个男孩可能看起来模糊不清,并且是一个更高分辨率的资源可以帮助防止像素化的例子。

你说过这个问题的方式表明(对我而言),你问的是9个补丁的图像是否可以替换所有可绘制的资源,如图标或带有图片的资源,答案是否定的。它们只能用于缩放具有单一颜色块的资源部分(即不能像素化的部分)。

- 当你想你的图像缩放等部位的部分以保持其原始尺寸

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

0

在Android的9补丁使用。首先想到的应用就是您所说的角落。 所以你在那种情况下使用它们。

。如果您希望您的资源出现在良好的质量(不模糊),你应该使用替代资源,另一方面(LDPI,华电国际..)

到这里看看:Screen Support

1

逻辑在9补丁后面是你不能缩放角落。

0

九贴片图像可扩展,但只在某些地区。最简单的例子是一个分为9个部分的框:角不会被缩放;边界将根据中间内容向一个方向延伸。

该概念以其他语言存在。 iOS,CSS3,W3C盒子模型就是这样的例子。然而,9贴片图像使用起来容易且灵活,因为:

  1. 对于其他语言,可以扩展几个区域而不是一个区域;
  2. 可缩放区域在图像中定义,而不是在代码中定义。