如何创建一个内部路径透明的矢量drawable?

时间:2018-01-12 10:59:10

标签: android shape android-vectordrawable

我正在尝试创建一个喜欢的图标,如下图所示。

enter image description here

在创建它时,我需要内部路径(蓝色区域)在结果中是透明的。但是在给出透明颜色的同时,它显示了在外部路径中填充的颜色。完整的橙色形状。我怎样才能用透明的内部路径制作矢量绘图

我的矢量drawable是

// Kotlin
private fun setInput(vg: ViewGroup) {
    (0..vg.childCount).map { vg.getChildAt(it) }.forEach {
        when (it) {
            is ViewGroup -> setInput(it) // recurse
            is EditText -> it.inputType = InputType.TYPE_CLASS_NUMBER
        }
    }
}

2 个答案:

答案 0 :(得分:2)

你有两种方法: 1)创建另一个矢量drawable,它只绘制外线,而不是重叠两个心 要么 2)去除橙色心脏并在蓝色心脏上添加橙色中风。只需复制下面的代码并尝试即可。请注意:一半的笔触宽度将进入图像内部,一半将移出外部,因此您的图像会有所不同(笔画将更接近图像的中心)

#include <iostream>
template<typename A,typename B>
struct IsSame{
  enum{
      value = 0};
};
template<typename A>
struct IsSame<A,A>{
    enum{
        value = 1  
    };
};
typedef int (SumType)(int,int)const;
class X{
  public:
        SumType sum;    
};
int X::sum(int a,int b)const{
    return a+b;
}

int main()
{
  std::cout << IsSame< int (const std::string&,int,int)const,
                       decltype( &X::sum)>::value;
}

结果:click to see the resulting image

答案 1 :(得分:0)

请像这样使用StrokeColor和strokeWidth

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="72dp"
android:height="66dp"
android:viewportHeight="66"
android:viewportWidth="72">

<path
    android:fillColor="@android:color/transparent"
    android:pathData="M 0.00 0.00 L 72.00 0.00 L 72.00 66.00 L 0.00 66.00 L 0.00 0.00 Z" />
<path
    android:fillColor="#000000000"
    android:pathData="M 19.98 7.14 C 25.68 7.39 30.87 12.07 36.10 12.99 C 41.30 12.15 46.97 7.14 52.84
    7.35 C 58.72 7.85 63.41 12.52 64.67 18.17 C 65.71 23.40 65.21 29.32 63.25 34.30
    C 59.83 42.88 52.20 49.81 44.38 54.43 C 40.52 56.53 36.81 58.58 32.37 56.70 C
    24.56 53.51 17.02 47.75 12.20 40.77 C 7.31 33.87 5.58 24.79 7.64 16.59 C 9.15
    11.09 14.21 6.98 19.98 7.14 Z"
    android:strokeColor="#F7592B"
    android:strokeWidth="5"/>