为什么我们需要9补丁?

时间:2013-05-13 12:02:49

标签: java android nine-patch

我的问题就像标题所说:为什么我们需要9张补丁图片?它们真的如此重要吗?实际上,他们真正做了什么?我没有清楚地了解9补丁图像的概念。

我知道9补丁图片是可扩展的。所以,假设我有一些完全适合我的ldpi设备的图像按钮。使用Draw 9-patch工具(android SDK的一部分),我可以标记可扩展区域,这个图像非常适合hdpi甚至xhdpi设备。边缘将是美好而顺利的。

但这是非常好的实践还是仅仅是另类? 我应该为ldpi,mdpi,hdpi和xhdpi设备创建每个图像,还是只能在一个图像上使用Android SDK“Draw 9-patch”并让Android处理各种设备?

我不是关于边缘,而是图片的实际内容。内容是否也可以扩展?

4 个答案:

答案 0 :(得分:5)

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

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

理想情况下,他们在适当的情况下将另外用于依赖密度的资源,以便资源的部分(您未明确说明的是可扩展的)不会升级,随后像素化的。

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

这还不够 - 如果你只包括一个低分辨率资源,如果设备显示密度更高,资源最初仍会按比例放大。在这种情况下,男孩可能从升级看起来模糊,并且是更高分辨率的资源可以帮助防止像素化的一个例子。

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

-

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

答案 1 :(得分:1)

9补丁背后的逻辑是你没有缩放角落。

答案 2 :(得分:0)

在android 9-patch中,当您希望图像的某些部分进行缩放以及其他部分保持其原始尺寸时使用。我们想到的第一个应用就是角落。 所以你在这种情况下使用它们。

另一方面,如果您希望资源以高质量出现(不会模糊),您应该使用其他资源(ldpi,hdpi ..)

看看这里:Screen Support

答案 3 :(得分:0)

九个补丁图像是可扩展的,但仅限于某些区域。最简单的例子是一个分为9个部分的盒子:角落不会缩放;边界将根据中间的内容向一个方向延伸。

这个概念存在于其他语言中。 iOS,CSS3,W3C盒子模型就是这样的例子。然而,9补丁图像使用起来非常简单灵活,因为:

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