在Android中如何设置矢量可绘制的大小

时间:2017-07-11 18:54:33

标签: android vector-graphics

我读到Add Multi-Density Vector Graphics并且我只需要一个矢量xml图像文件来支持所有屏幕尺寸。但是,当我尝试它时,我仍然需要设置:

   <android.support.v7.widget.AppCompatImageView
                android:id="@+id/country_image"
                android:layout_width="50dp"
                android:layout_height="35dp"
                android:paddingTop="4dp">

android:layout_widthandroid:layout_height就像上面的代码一样,使向量具有我想要的大小。

在上面的代码中,AppCompatImageView显示了一个矢量国家/地区标记图像,如果我没有设置宽度和高度,则图像会占用屏幕。

这假设如何工作?

1 个答案:

答案 0 :(得分:2)

首先,简单地说,矢量图形文件包含如何绘制图像的规则。这些规则独立于图像大小。因此,您可以将相同的矢量文件用于任何分辨率和任何大小,这就是为什么您只需要一个文件。

其次,您需要hdpixhdpi和其他版本的png的原因是在具有不同像素密度的屏幕上显示您的图像。例如,您不需要大图像才能在 320x480分辨率的旧手机上显示它。所以系统会拿起你的mdpi或ldpi png 。但是,如果您的图像显示在全高清屏幕上,例如小png看起来会像素化,那么系统选择xhdpixxhdpi png版本。它无法从xhdpi制作ldpi,因此您需要不同的图片文件

另一方面,当您使用矢量图形时,系统可以从同一个文件中创建具有任何分辨率的图像。它将为320x480屏幕创建一个小图像,为全高清屏幕创建大图像 - 因此您需要仅一个文件来统治它们

回复你的评论:

您可以将layout.xml文件放在res/drawable中,它将用于所有屏幕。然后在dp中设置大小。

  

dp或dip与密度无关的像素 - 基于的抽象单位   关于屏幕的物理密度。这些单位是相对于   160 dpi屏幕,因此一个dp是160 dpi屏幕上的一个像素。比例   dp-to-pixel将随屏幕密度而变化,但不会   必然是正比例的。注意:编译器同时接受这两个   &#34;浸&#34;和&#34; dp&#34;,虽然&#34; dp&#34;更符合&#34; sp&#34;。

因此,您将拥有一个布局文件,将图像的layout_heightlayout_width设置为一次,并将在所有可能的屏幕上使用。