使用较大的可绘制矢量,而无需重新定义它

时间:2018-10-30 11:29:07

标签: android android-vectordrawable

我有一个24dp图标,定义为矢量绘图,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="100"
    android:viewportHeight="100"
    android:width="24dp"
    android:height="24dp">
    <group
        android:rotation="45"
        android:translateX="51.52484"
        android:translateY="-19.96257">
        <path
            android:pathData="M19.199993 36l19.600014 0C38.910803 36 39 36.089197 39 36.199993l0 6.75947c0 0.110796 -0.0892 0.199993 -0.199993 0.199993l-19.600014 0C19.089197 43.159456 19 43.070259 19 42.959463l0 -6.75947C19 36.089197 19.089197 36 19.199993 36Z"
            android:fillColor="#000000" />
        <path
            android:pathData="M41.2 29l16.6 0c0.1108 0 0.2 0.0892 0.2 0.2l0 18.6C58 47.9108 57.9108 48 57.8 48L41.2 48C41.0892 48 41 47.9108 41 47.8L41 29.2C41 29.0892 41.0892 29 41.2 29Z"
            android:fillColor="#000000" />
        <path
            android:pathData="M60.199993 36l19.600014 0C79.910803 36 80 36.089197 80 36.199993l0 6.75947c0 0.110796 -0.0892 0.199993 -0.199993 0.199993l-19.600014 0C60.089197 43.159456 60 43.070259 60 42.959463l0 -6.75947C60 36.089197 60.089197 36 60.199993 36Z"
            android:fillColor="#000000" />
        <path
            android:pathData="M50 50C36.859076 50 25.683178 58.456704 21.625 70.21875 28.83571 73.156161 39.090953 75 50.5 75 61.427942 75 71.317525 73.285885 78.46875 70.5625 74.508388 58.626443 63.265188 50 50 50Z"
            android:fillColor="#000000"
            android:fillAlpha="0.1568628" />
        <path
            android:pathData="M50 50c-13.140924 0 -24.316821 8.456704 -28.375 20.21875 1.462352 0.595715 3.051404 1.125957 4.75 1.625C29.757128 62.04261 39.049633 55 50 55c11.054729 0 20.418772 7.177719 23.71875 17.125 1.683691 -0.46586 3.282402 -1.003598 4.75 -1.5625C74.508387 58.626443 63.265188 50 50 50Z"
            android:fillColor="#000000" />
        <group
            android:scaleX="1.4"
            android:scaleY="1.40625"
            android:translateX="-16.5"
            android:translateY="-45.53125">
            <path
                android:pathData="M50 82.5A2.5 2.5 0 0 1 47.5 85 2.5 2.5 0 0 1 45 82.5 2.5 2.5 0 0 1 47.5 80 2.5 2.5 0 0 1 50 82.5Z"
                android:fillColor="#000000" />
        </group>
    </group>
</vector>

我需要在另一个地方以其他大小(即36dp)使用它

如何不定义两次就怎么做?

我试图像这样使用ScaleDrawable:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
       android:drawable="@drawable/icon_24dp"
       android:scaleGravity="fill"
       android:scaleHeight="150%"
       android:scaleWidth="150%" />

但是它不起作用。

请不要回答在ImageView中设置尺寸,这不是我想要的。

谢谢

2 个答案:

答案 0 :(得分:0)

您创建的矢量可绘制对象包含了它在任何尺寸上绘制自身所需的所有信息。
您不需要其他大小不同的可绘制对象。
您可以在2种ImageViews中尝试使用:

<ImageView
    android:layout_width="200dp"
    android:layout_height="200dp"
    app:srcCompat="@drawable/what"/>

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    app:srcCompat="@drawable/what"/>

您会看到可绘制对象正确调整大小以适合2个不同大小的ImageView。
对于非常大的尺寸,您可能会看到可绘制像素化。

答案 1 :(得分:0)

如果不想为要使用的每种尺寸重新定义矢量可绘制对象,则必须打开对矢量可绘制对象的兼容性支持。

请阅读my answer here,以找到有关在打开支持后需要进行的更改的详细信息。

**更新**

似乎您想将可绘制对象放入“首选项”中,我想如果要在保留1个文件的同时控制可绘制对象的大小,则必须尝试以编程方式缩放它或创建自己的自定义“首选项”视图。