当我创建一个矢量drawable时,我可以在dp
中设置它的大小。默认值为24dp x 24dp。
如果我在我的应用中使用的矢量大小不同于24dp x 24dp,那么这些测量在性能方面是否重要?另外关于21岁以下的API(我使用app:srcCompat
来显示图像)。
当使用较低的API并且系统将其缩小时,矢量大小是否重要?
这些测量对我的用途是否重要,除了在我申请wrap_content
时只是默认尺寸?
答案 0 :(得分:1)
我可能无法解答您的所有问题,但如果您没有通过Lollipop前版本的支持库使用矢量绘图,那么DP大小肯定很重要。
要启用支持向量drawable,您必须将以下内容添加到应用程序的gradle构建文件中:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
请参阅https://android-developers.googleblog.com/2016/02/android-support-library-232.html
如果这不是您应用的构建文件的一部分,Android Studio将为所有具有已定义DP大小的Lollipop前版本生成PNG。因此,如果你的矢量定义了24dp并且你将它用作128dp图形,那么在Lollipop之前版本中它很可能看起来不太好,因为将使用24dp PNG。
生成的PNG可以在这里找到:
app\build\generated\res\pngs\...
如果你的矢量是128dp并且你将它用作24dp图形,那么由于缩放而缩小的PNG图形也可能看起来不像预期的那样完美,并且你可能由于PNG太大而浪费了一些文件大小。
我从未真正看过这对表演的意义......
答案 1 :(得分:0)
wrap_content
时,设备将以您想要的大小(24dp)渲染矢量。设置更大的大小将导致渲染更大的位图,这会影响您的UI和性能。如果您没有使用包装内容并且您正在使用支持库来处理矢量,那么矢量大小应该无关紧要。vectorDrawables.useSupportLibrary = false
,那么您的apk还将包含用于API 21之前的设备的生成的矢量位图。较大的位图需要更多时间打开,使用更多内存并且还会增加apk的大小。如果您使用的UI大小超过UI所需的大小(系统会将其缩小),它也会影响性能并可能降低图像质量。wrap_content
时,如果您使用vectorDrawables.useSupportLibrary = true