Android使用笔划宽度绘制矢量的正确方法
嗨,我正在尝试在我的android应用程序中使用矢量绘图 下面是相同的xmlAndroid使用笔划宽度绘制矢量的正确方法,android,xml,android-layout,android-drawable,vector-graphics,Android,Xml,Android Layout,Android Drawable,Vector Graphics,嗨,我正在尝试在我的android应用程序中使用矢量绘图 下面是相同的xml <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="1024dp" android:height="1024dp" android:viewportWidth="1024" android:v
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="1024dp"
android:height="1024dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M 0,0 L 50,0 L 50,50 z"
android:strokeColor="#000000" />
</vector>
下面是它在没有任何笔划宽度的情况下的外观
如果我添加android:strokeWidth=“10”,下面是它的外观
所有线条的斯托克宽度不一致(宽度相同),最左边的点似乎没有被切断
有没有办法使绘制的所有3条线一致(宽度相同)且不不不规则?将可绘制线想象为一个坐标系,点p(0,0)位于左上角。x轴从左上角到右上角,y轴从左上角到左下角 创建路径时,路径会从坐标系中的一个点移动到另一个点。在绘制此路径时,绘制的线具有一些默认值为1的
strokeWidth
。但是,当您将宽度设置为10时,坐标系中的线条要厚得多,但是如果您的路径已经在y=0,那么该“厚度”应该放在哪里?drawable不会显示任何负坐标。这就是为什么你的抽绳被切断了
解决方案:
将strokeWidth
添加到小于strokeWidth
+
从大于viewportWidth strokeWidth
和/或viewportHeight strokeWidth
+的坐标中减去strokeWidth
+为视口边界处的边指定间距(在本例中,额外的间距为3即可)
因此,您的代码应该如下所示:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="1024dp"
android:height="1024dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M 13,13 L 50,13 L 50,50 z"
android:strokeColor="#000000"
android:strokeWidth="10"/>
</vector>
从我看到的问题是,您正在左上角(0,0)绘制,这会导致笔划的一侧被剪裁到视口的边缘。感谢您提供的解决方案,我想知道是否有适用于复杂对象的通用解决方案,我的意思是,在xml中提供一个向量资产,我们是否可以使用具有不同笔划宽度的相同xml而不改变底层对象