我读到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_width
和android:layout_height
就像上面的代码一样,使向量具有我想要的大小。
在上面的代码中,AppCompatImageView
显示了一个矢量国家/地区标记图像,如果我没有设置宽度和高度,则图像会占用屏幕。
这假设如何工作?
答案 0 :(得分:2)
首先,简单地说,矢量图形文件包含如何绘制图像的规则。这些规则独立于图像大小。因此,您可以将相同的矢量文件用于任何分辨率和任何大小,这就是为什么您只需要一个文件。
其次,您需要hdpi
,xhdpi
和其他版本的png的原因是在具有不同像素密度的屏幕上显示您的图像。例如,您不需要大图像才能在 320x480分辨率的旧手机上显示它。所以系统会拿起你的mdpi或ldpi png 。但是,如果您的图像显示在全高清屏幕上,例如小png看起来会像素化,那么系统选择xhdpi
或xxhdpi
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_height
和layout_width
设置为一次,并将在所有可能的屏幕上使用。