Tar*_*ury 5 android android-vectordrawable
我需要帮助来了解XML定义的VectorDrawable的某些属性。
当我使用Android Studio导入新的矢量资产时,它会生成类似以下内容的内容:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#000000"
android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z" />
</vector>
Run Code Online (Sandbox Code Playgroud)
默认情况下,宽度,高度,viewportHeight和viewportWidth被设置为某些默认的Material设计值。
由于我们处理的是矢量而不是像素图像。我的问题是:
VectorDrawables 可以用在您以前使用 png 的地方。如果 VectorDrawable 没有宽度和高度,您将产生一个全新的问题,如果您没有将 VectorDrawable 的大小定义为原始 xml 的一部分,则必须确保每次都定义它想用它。
这将使使用 VectorDrawable 与使用其他可绘制对象有很大不同,例如使用“wrap_content”不起作用,因为您依赖“内容”来定义事物的大小。这意味着您无法像现在一样用 VectorDrawable 替换 png,这会导致应用程序的某些部分损坏。
如果您想让 VectorDrawable 对于不同的设备配置具有不同的大小,您可以通过使用资源引用来定义它。
<vector ...
android:width="@dimen/vector_size"
android:height="@dimen/vector_size"
.../>
Run Code Online (Sandbox Code Playgroud)
然后在 res/values 中定义它:
<resources>
<dimen name="vector_size">24dp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后,您可以按照通常的方式将 vector_size 指定为不同设备配置的不同值。
如果您想在同一设备上使用具有多种尺寸的相同 VectorDrawable,目前会有点困难,您最好创建多个版本。如果这样做,您可以考虑将 pathData 移动到字符串资源:
<path ...
android:pathData="@string/vector_path_name"/>
Run Code Online (Sandbox Code Playgroud)
这样,即使您有多个 VectorDrawable,它们都引用定义其形状的相同 pathData,如果您更改该字符串,您将更新所有版本。
| 归档时间: |
|
| 查看次数: |
1289 次 |
| 最近记录: |