我是android studio的新手,并计划为平板电脑和手机设计应用程序。因此,我的应用程序将主要用于普通和大屏幕。
wrap_content
不支持多种屏幕尺寸。我认为矢量图像在变形时不会变得模糊。 答案 0 :(得分:1)
Vector Drawables
顾名思义,矢量绘图基于矢量图形,与光栅图形相反,矢量图形是一种使用几何形状描述图形元素的方法。它类似于SVG文件。在Android Vector Drawable中创建为XML文件。现在无需为mdpi
,hdpi
,xhdpi
,xxhdpi
,xxxhdpi
等创建不同大小的图片。我们只需要一个矢量文件用于多个屏幕尺寸设备。此外,对于不支持矢量绘图的旧版Android,Vector Asset Studio可以在运行时将矢量绘图转换为每个屏幕密度的不同位图大小。
越小越好
对于Android,将VectorDrawable转换为位图的光栅化过程在CPU上进行。因此,创建图像所需的处理时间与图像本身的分辨率/尺寸之间通常存在线性关系。将三角形栅格化为16x16像素纹理可能仅需要计算总共8-12个像素的颜色片段。对1024x1024纹理进行相同操作会触及十万个像素,这显然需要更多时间。 因此,随着您创建的纹理尺寸变大,将会成为一个收支平衡点,其中加载时间变得非常重要,并且使用Vector Drawable不再有意义。
答案 1 :(得分:1)
" dpi"对于矢量图标是没有意义的。矢量图标是DPI独立的。这就是他们的全部观点。你设计它们的大小并不重要。它只会影响你在运行时绘制(渲染)它们的大小。显示的尺寸越大,必须计算和绘制的像素越多。
这是@ muhammad-younas的第二段回答(来自this Colt McAnlis blog)试图说的。
答案 2 :(得分:0)
我使用InkScape
进行编辑并保存SVG
文件(矢量图像)。从理论上讲,它适合任何规模的扩展。理论上...
在 Android Studio 中,我使用New
,Vector Asset
,然后选择SVG
文件,它会在{下创建一个XML
文件{1}文件夹下的{1}}文件夹。但是有时候,没有任何说明,图像在我的手机中变得模糊(在 Android Studio 预览中没有模糊)。太疯狂了。
我已经尝试了一切,并且只有一个动作解决了我的问题:
我决定直接在 Android Studio 中更改drawables
文件。我读了一些关于res
和XML
规格(图像大小)与width
和height
(手机中图像的实际大小)的信息
所以我决定按比例扩大第一对viewportWidth
和viewportHeight
例如,一张模糊的图像具有:
width
我将height
放在脑海中,所以我制作了<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="6.415605dp"
android:height="5.33568dp"
android:viewportWidth="6.415605"
android:viewportHeight="5.33568">
....
</vector>
。因此,我将第一对中的两个数字都乘以width = 25dp
。因此,我有了25 / 6.415605 = 3.89675
和3.89675
的新值。
这只是一个随机的猜测。重要的是要使width
和height
比width
和height
大得多,并保持比例。
viewport width
它就像一种魅力...