android 中的九个补丁与矢量

nine patch vs vector in android

Nine-patch versus Vector graphics

这篇我看了,还是不太明白,

我正在尝试使用九个补丁或矢量,因为在我的项目中按分辨率准备所有位图文件太烦人了。

我知道两者都是用来在不同的屏幕分辨率下显示相同的尺寸和图像。

但我不知道具体有什么不同。此外,九个补丁针对按钮进行了更优化。

我可以将我的 Android 项目中的所有图像和图标制作成矢量或九补丁吗?

nine-patch:nine-patch是将你定义的区域多拉伸一个像素的方式,所以它可以适应所有的分辨率。

向量:向量是如何以您设置的特定宽度和高度绘制图像的方式。

让我给你简要介绍一下。

NinePatchDrawable:

NinePatchDrawable 图形是可拉伸的位图图像,Android 会自动调整大小以适应您将其作为背景放置在其中的视图的内容。 NinePatch 的一个使用示例是标准 Android 按钮使用的背景 — 按钮必须拉伸以适应各种长度的字符串。 NinePatch 可绘制对象是一个标准的 PNG 图像,包括一个额外的 1 个像素宽的边框。它必须以扩展名 .9.png 保存,并保存到项目的 res/drawable/ 目录中。边框用于定义图像的可拉伸和静态区域。您通过在边框的左侧和顶部绘制一条(或多条)1 像素宽的黑线(其他边框像素应完全透明或白色)来指示可拉伸部分。您可以拥有任意数量的可拉伸部分:它们的相对大小保持不变,因此最大的部分始终保持最大。您还可以通过在右侧和底部画一条线来定义图像的可选可绘制部分(实际上是填充线)。如果 View 对象将 NinePatch 设置为其背景,然后指定 View 的文本,它将自行拉伸,以便所有文本仅适合右线和底线(如果包含)指定的区域。如果不包括填充线,Android 使用左线和顶线定义此可绘制区域。为了阐明不同线条之间的区别,左侧和顶部的线条定义了允许复制图像的哪些像素以拉伸图像。底线和右线定义图像中的相对区域,允许视图的内容位于其中。

VectorDrawable:

与位图不同,矢量图像不是基于像素图案,而是使用数学公式绘制直线和曲线,这些直线和曲线可以结合起来从几何对象(例如圆形和多边形)创建图像。矢量图像是通过使用 Adob​​e Illustrator 等程序处理构成图像的直线和曲线来编辑的。

与位图图像相比,矢量图像具有一些重要的优势。矢量图像往往比位图图像小。这是因为位图图像必须为构成图像的每个像素存储颜色信息。矢量图片只需要存储构成图像的数学公式,占用较少space.

矢量图像也比位图图像更具可缩放性。放大位图图像时,您会开始看到构成图像的各个像素。这在图像的边缘最为明显。有一些方法可以使这些锯齿状边缘不那么明显,但这通常也会导致图像变得模糊。矢量图像放大后,会使用数学公式重新绘制图像,因此生成的图像与原始图像一样平滑。

Web 上使用的三种最流行的图像格式(PNG、JPEG 和 GIF)是位图格式。由于早期浏览器对矢量图形的支持不佳,可缩放矢量图形 (SVG) 格式排在第四位。然而今天,所有主流浏览器都支持 SVG(可缩放矢量图形)格式。

位图格式最适合需要具有多种颜色渐变的图像,例如大多数照片。另一方面,矢量格式更适合由几个纯色区域组成的图像。非常适合矢量格式的图像示例包括徽标和字体。

你也可以参考这个link: http://www.gkmit.co/articles/vector-drawable

希望对您有所帮助。如果您还有其他疑问,请告诉我。