2017-07-11 35 views
0

我读了Add Multi-Density Vector Graphics,我只需要一个矢量xml图像文件来支持所有屏幕大小。然而,当我尝试它,我还是要设置:在Android中如何设置矢量绘图大小

<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显示一个矢量国家国旗图像,如果我没有设置宽度和高度,图像占据屏幕。

这是假设如何工作?

+0

所以如果你不想全屏,那么你想要什么尺寸? – pskink

+0

我在hdpi,xhdpi ..文件夹中有这个PNG图像,现在我想测试矢量绘图,所以我只需要一个图像而不是hdpi,xhdpi。我认为使用矢量图像会自动调整可绘制尺寸 –

+0

问题是视图 - 它是设置可绘制尺寸的视图 - 所以首先确定视图的大小,然后drawable将自行调整 – pskink

回答

2

首先,简单地说,矢量图形文件包含规则如何绘制图像。这些规则是独立的图像大小。所以你会使用相同的矢量文件来处理任何分辨率和大小,这就是为什么你只需要一个文件。

其次,您需要hdpi,xhdpi和其他版本的png的原因是在具有不同像素密度的屏幕上显示图像。例如,你不需要一个大的图像显示在320x480分辨率旧手机上。所以系统将会提取你的mdpi或ldpi png。但是,如果您的图像显示在全高清屏幕上,例如小PNG会看起来像素化,所以系统选择xhdpixxhdpi png版本。它不能使xhdpildpi,所以你需要不同的图像文件

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

回复您的评论:

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

dp或dip与密度无关的像素 - 基于屏幕物理密度的抽象单位 。这些单位相对于160 dpi屏幕的 ,因此一个dp是160 dpi屏幕上的一个像素。 dp对像素的比率 将随着屏幕密度而变化,但不一定按正比例变化。注:编译器同时接受 “dip”和“dp”,但“dp”与“sp”更加一致。

所以你必须一个布局文件,在里面设置图像的layout_heightlayout_width一次,它会在所有可能的屏幕上使用。

+0

是的完全如此为什么在我的问题时,我必须为每个分辨率设置'android:layout_width'和'android:layout_height'当你说它会由系统创建? –

+0

我已经更新了答案。虽然我不明白你为什么要为每个分辨率设置大小。如果您使用DP,它将是实际的实际大小,而不是像素,因此它在任何屏幕上都是相同的。系统会照顾它,根据您的一个矢量可绘制文件和一个布局文件。 – TpoM6oH

+0

谢谢你教我这个,矢量drawable是篦 –