Android 自定义矢量缩放
Android custom vector scaling
我正在尝试创建自定义形状以用作菜单抽屉的背景。我遇到的问题是我无法得到我想要的形状。目前,我正在 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>
当前结果:
想要的结果:
期望的结果本质上是一个稍微向右偏移的大圆
试试这个
<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>
Try shape xml code
<?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>
我正在尝试创建自定义形状以用作菜单抽屉的背景。我遇到的问题是我无法得到我想要的形状。目前,我正在 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>
当前结果:
想要的结果:
期望的结果本质上是一个稍微向右偏移的大圆
试试这个
<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>
Try shape xml code
<?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>