理解 9-patch drawables

Understanding 9-patch drawables

第 1 部分

如果 9-patch 图像必须有一个 one 像素可拉伸区域用于区域 2、4、6、8(按阅读顺序计算区域),9-patch 如何images 捕获如下图所示的图像,其中角为 4x4,每个可拉伸区域为 4 像素宽?

第 2 部分

为什么sdk/tools/draw9patch可以独立修改顶部和底部区域?同样,为什么左右区域是独立的?我希望编辑器能够提供仅操作上图中出现的四个插入符号的方法。

4 个边框必须 1 像素高(或宽)并且透明
他们可能有也可能没有 9 个补丁标记 1 像素高(或宽)和高和黑色

上边框用于标记(零),一个或多个可伸缩水平area/s.
左边框用于标记(零),一个或多个可伸缩垂直area/s

(可选)右边框用于设置垂直内容区域(实际上,它标记了一些内部填充)。
(可选)底部边框用于设置水平内容区域(实际上,它标记了一些内部填充)。

更多内容可在本文中找到: http://blog.booleanbites.com/2012/11/android-how-to-use-9-patch-png.html

例如

以下两张图片都适合作为 9-patch,但要符合以下条件:

  1. 四个角的四分之一圆必须保持其纵横比,即使图像的纵横比已从其原始纵横比进行了修改。
  2. 同样,边框中的圆圈必须保持为圆圈(即,它们不能缩放)。

另外:

9-patch图像的规范是欠约束的,即:

  1. 没有关于四个绿色角的说明。它们可以有任何值。
  2. 由于我们指定了在需要时缩放的区域,而不是那些不能缩放的区域,因此在粉红色单像素边框的规范中存在余地。顶部或底部都可以。 但是,在这个例子中,为了保持圆圈在边框的中心,粉红色像素的宽度必须相等。

在本例中,我们专门研究旨在创建可变大小框架的情况。为了使其按预期工作,必须正确设置透明度:

  1. 内部灰色区域的透明度为全透明。
  2. 粉红色像素的透明度无关紧要 (?)。
  3. 青色像素的透明度必须完全不透明。