Nine-patch versus Vector graphics
我读过这篇,但仍然不明白,
我试图使用九个补丁或矢量,因为太烦人了,无法在我的项目中按分辨率准备所有位图文件。
我知道当以不同的屏幕分辨率查看时,两者都用于显示相同的尺寸和图像。
但是我不知道细节上有什么不同。除了针对按钮优化了九个补丁这一事实。
我可以将Android项目中的所有图像和图标制作为矢量或9补丁吗?
答案 0 :(得分:1)
让我简要介绍一下。
NinePatchDrawable:
NinePatchDrawable图形是可拉伸的位图图像,Android会自动调整其大小以容纳您将其放置为背景的View的内容。 NinePatch的一个示例用法是标准Android按钮使用的背景-按钮必须拉伸以容纳各种长度的字符串。 NinePatch可绘制对象是标准的PNG图像,包括一个额外的1像素宽的边框。它必须以扩展名.9.png保存,并保存到项目的res / drawable /目录中。边框用于定义图像的可拉伸和静态区域。您可以通过在边框的左侧和顶部绘制一条(或多条)1像素宽的黑色线条(其他边框像素应完全透明或白色)来表示可拉伸部分。您可以根据需要设置任意数量的可拉伸部分:它们的相对大小保持不变,因此最大的部分始终保持最大。您还可以通过在右和底线上画一条线来定义图像的可选可绘制部分(实际上是填充线)。如果View对象将NinePatch设置为背景,然后指定View的文本,它将自动拉伸,使所有文本仅适合由右行和底行指定的区域(如果包括)。如果不包括填充线,Android将使用左和顶线定义此可绘制区域。为了阐明不同线条之间的差异,左侧和顶部线条定义了允许复制图像的哪些像素以拉伸图像。底行和右行定义了允许View内容位于图像中的相对区域。
VectorDrawable:
与位图不同,矢量图像不是基于像素模式,而是使用数学公式绘制可以组合起来的线和曲线,以根据诸如圆形和多边形之类的几何对象创建图像。使用诸如Adobe Illustrator之类的程序通过操纵构成图像的直线和曲线来编辑矢量图像。
矢量图像比位图图像具有一些重要的优势。矢量图像往往比位图图像小。这是因为位图图像必须存储构成图像的每个像素的颜色信息。矢量图像只需要存储构成图像的数学公式即可,而这些数学公式占用的空间更少。
矢量图像也比位图图像更具可伸缩性。当放大位图图像时,您开始看到组成图像的各个像素。这在图像边缘最明显。有一些方法可以使这些锯齿状的边缘不那么明显,但这通常也会导致图像模糊。当放大矢量图像时,将使用数学公式重新绘制图像,因此生成的图像与原始图像一样平滑。
网络上使用的三种最受欢迎的图像格式(PNG,JPEG和GIF)是位图格式。可伸缩矢量图形(SVG)格式排在第四位,原因是早期浏览器对矢量图形的支持不佳。但是,今天,所有主流浏览器都支持SVG(可缩放矢量图形)格式。
位图格式最适合需要多种颜色渐变的图像,例如大多数照片。另一方面,矢量格式更适合包含一些纯色区域的图像。非常适合矢量格式的图像示例包括徽标和类型。
您还可以引用此链接: http://www.gkmit.co/articles/vector-drawable
希望这对您有所帮助。让我知道您是否还有其他疑问。
答案 1 :(得分:0)
9色块:9色块是将您定义的区域扩展一像素的方法,因此它可以适应所有分辨率。
vectors:vectors是一种以您设置的特定宽度和高度绘制图像的方式。