android九补丁的实用程序

时间:2014-03-27 10:36:00

标签: android image resize nine-patch

我想知道为什么我们使用九补丁?我知道缩小或拉伸图像,但如果我想调整图像大小,我们只能在像gimp这样的专用图像编辑器上进行调整吗?

8 个答案:

答案 0 :(得分:18)

什么是9-Patch?

9-Patch 图像是可拉伸的,可重复的图像缩小到最小尺寸;用户绘制一个右下角的纯黑色1像素边框,告诉系统如何将内容放置在图像中。

9-Patch是一个PNG图像,增加了文件名(filename.9.png)的扩展名,允许Android系统确定如何拉伸和扭曲图像以满足特定的布局约束。

Android操作系统会读取这些图像的边框,以了解如何正确拉伸图像本身以及图像中的内容,例如文本和效果。

9-Patch Theory 9 Patch image concept

9-Patch 的名称来自于创建的叠加将图像分成九个定义的区域。每个区域都有特定的拉伸特性:

角落区域(1,3,7,9) 这些区域是固定的,它们内部没有任何东西会伸展

水平边(4,6) 必要时,这些区域中的像素将垂直拉伸。

垂直边(2,8) 必要时,这些区域中的像素将水平拉伸。

中心(5) 该区域中的像素将在水平和垂直方向上均匀拉伸。

here is Google docs

答案 1 :(得分:6)

九个补丁图像非常有用,因为它可以减少您的资源,并且可以保持曲线形状在正常的.png中伸展。

  1. 减少资源:可以制作一个小的NinePatch图像,并可以通过重复 Pixel

  2. 尽可能地拉伸它
  3. 即使显示尺寸发生变化,也会保留边角。

  4. 无需以编程方式提供填充,您可以直接在NinePatch中保留文本区域。

  5. 顶部和左侧像素边框定义可伸展区域。但是,底部和右侧定义了CONTENT区域。如果你想让填充物消失,你需要让底部和右边的条一直延伸到艺术品的边缘(尽管不是一直到角落的像素!)。基本上,右边和底部像素边框定义了填充。

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

    http://www.developer.com/ws/android/programming/Working-with-NinePatch-Stretchable-Graphics-in-Android-3889086.htm

    enter image description here

答案 2 :(得分:5)

使用9-patch图像的优点是,当使用它作为背景时,图像不会在不同的屏幕尺寸中拉伸和松散比例。中心的“补丁”将保持原样,“边框”补丁将被拉伸以适应屏幕/视图大小。

另一个最大的优势是记忆。相同的小尺寸内存可以重复用于不同的屏幕尺寸设备。设计良好的9补丁图像不易出错,具有很高的可重用性。我很难为不同分辨率优化UI,直到我知道Android支持9-patch。

对于填充,因为@hotveryspicy说你可以使用填充框(你的文本按钮将被填充)来定义你的paddig值,它们的定义如下:

  1. padding-top:填充框顶边与之间的距离 按钮的上边缘
  2. padding-bottom:填充框的buttom边缘与之间的距离 按钮的按钮边缘
  3. padding-right:填充框右边缘与之间的距离 按钮的右边缘
  4. padding-left:填充框的左边缘与之间的距离 按钮的左边缘
  5. 希望这能帮助你清楚地了解9-patch drawable的重要性

答案 3 :(得分:3)

Nine-patch用于在运行时对图像进行动态拉伸和缩小。这就是为什么它无法与使用图像编辑器静态调整图像大小进行比较的原因。

Nine-patch用于边框等根据内容动态调整大小的内容,因此必须动态扩展。

答案 4 :(得分:2)

9补丁图像不仅放大了;他们以一种明确的方式“伸展”。经典案例是带圆角的纽扣。如果按钮刚刚缩放,角落的半径也会增大。对于9个补丁图像,可以将边角定义为保持相同的尺寸,同时增加边缘的长度。

答案 5 :(得分:1)

你使用过css吗?如果没有,那么有一个叫做重复的属性,它可以让你重复1px图像到1040的宽度,甚至更多没有淀粉

9路径做同样的事情,有些时候由于图像的分辨率不同而不是为每部手机创建单独的图像创建9个补丁图像

希望有帮助

答案 6 :(得分:1)

Nine-patch 是在运行时进行拉伸...例如,如果您使用具有自定义背景的按钮,并说width-> fill_parent ...有很多有不同分辨率的不同设备如何为所有这些设备准备图像...你会给出一个九个补丁并在跑步中伸展它。

答案 7 :(得分:1)

九贴片允许您仅拉伸图像的一部分,而不是整个图像。设计例如自定义按钮,EditTexts等等可能很有用......

你可以在这里倾斜更多:http://developer.android.com/tools/help/draw9patch.html

相关问题