Android自定义矢量缩放

时间:2019-02-28 00:45:43

标签: android android-drawable android-shape

我正在尝试创建一个自定义形状以用作菜单抽屉的背景。我遇到的问题是我无法获得想要的形状。目前,我正在Adobe Illustrator中将形状创建为svg,然后converting将其创建为XML可绘制对象,但效果不理想。如何获得可绘制矢量,具体取决于其父级(match_parent)和内容(wrap_content)?

menu_shape.xml
我注意到的一个问题是,此形状不能完全响应,因为它实际上被挤压以适合视口,因此其行为因屏幕尺寸而异。

<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
    android:viewportWidth="597.28"
    android:viewportHeight="542.16"
    android:width="597.28dp"
    android:height="542.16dp">
    <path
        android:pathData="M0.5 303.39V0.5H596.78V370.39S310.5 797.13 0.5 303.39Z"
        android:fillColor="#A92324"
        android:strokeColor="#231F20"
        android:strokeWidth="1"
        android:strokeMiterLimit="10" />
</vector>

当前结果:

所需结果:
所需的结果实质上是一个大的圆圈,该圆圈稍微向右偏移

2 个答案:

答案 0 :(得分:1)

尝试一下

<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
        android:viewportWidth="597.28"
        android:viewportHeight="542.16"
        android:width="597.28dp"
        android:height="542.16dp">
  <path
          android:pathData="M0.5 302.39V0.5H596.7V374.39S310.5 501.13 0.5 303.39Z"
          android:fillColor="#A92324"
          android:strokeColor="#231F20"
          android:strokeWidth="1"
          android:strokeMiterLimit="10" />
</vector>

答案 1 :(得分:0)

  

尝试形状xml代码

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">

                <padding android:left="-100dp"
                    android:top="-100dp"
                    android:right="-100dp"/>
            </shape>
        </item>
        <item>
            <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="oval">
                <solid
                    android:color="#712EF1" />
            </shape>
        </item>
    </layer-list>