微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Android画布上绘制VectorDrawables的奇怪行为

如何解决在Android画布上绘制VectorDrawables的奇怪行为

我是Android中使用VectorDrawables的新手,需要一些帮助,因为我有一种尚不了解的行为。

我有两个矢量资产,用于绘制一个简单的图标(菱形)。它们几乎是相同的,只是它们的fillColor不同:一个是黑色,另一个是白色。 在我的代码中,我尝试在一个特殊位置绘制第一个菱形(黑色),然后在相同位置绘制另一个菱形(白色)。 我的假设是白色菱形完全覆盖了黑色菱形,但是我想知道为什么在菱形后面仍然可以看到一个小的“黑色边框”。

有人可以告诉我这种行为的原因吗?

先谢谢了。 鲍里斯

    private void drawVector(Canvas canvas,int resId,int x,int y,int width,int height){
        canvas.save();
        canvas.translate(x,y);
        VectorDrawableCompat vectorDrawable = VectorDrawableCompat.create(getContext().getResources(),resId,null);
        vectorDrawable.setBounds(0,width,height);
        vectorDrawable.draw(canvas);
        canvas.restore();
    }

一个颜色为黑色的xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="200dp"
    android:height="200dp"
    android:viewportWidth="200"
    android:viewportHeight="200"
    >
  <path
      android:pathData="M0,100 L100,0 200,100 100,200Z"
      android:fillColor="#000000"/>
</vector>

具有白色的第二个xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="200dp"
    android:height="200dp"
    android:viewportWidth="200"
    android:viewportHeight="200"
    >
  <path
      android:pathData="M0,200Z"
      android:fillColor="#FFFFFF"/>
</vector>

打印两个可绘制在同一位置的矢量:

drawVector(canvas,R.drawable.ic_raute1,x,y,200,200)
drawVector(canvas,R.drawable.ic_raute2,200)

VectorDrawable with "border"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。