You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android矢量Drawable中如何裁剪路径实现时钟指针镂空透明?

实现指针镂空的方案

要通过裁剪路径实现指针区域的镂空,核心思路是把蓝色圆形放在一个裁剪组里,让裁剪路径只显示「完整画布减去指针区域」的部分,这样圆形在指针覆盖的位置就会被裁掉,形成透明镂空效果。

裁剪路径实现的完整代码

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">

    <!-- 裁剪组:只保留圆形减去指针的区域 -->
    <group>
        <!-- 裁剪路径:同时包含完整画布和指针路径,用evenOdd规则排除重叠区 -->
        <clip-path
            android:pathData="M0,0h24v24h-24z M12,7.17V12L16.032,15.562"
            android:fillType="evenOdd"/>

        <!-- 蓝色圆形 -->
        <path
            android:pathData="M12,22.806C17.968,22.806 22.806,17.968 22.806,12C22.806,6.032 17.968,1.194 12,1.194C6.032,1.194 1.194,6.032 1.194,12C1.194,17.968 6.032,22.806 12,22.806Z"
            android:strokeWidth="1.5"
            android:fillColor="#003087"
            android:strokeColor="#003087"
            android:strokeLineCap="round"/>
    </group>

</vector>

关键逻辑说明

  • 裁剪路径的pathData同时写了整个画布的矩形路径和原来的指针路径,再加上android:fillType="evenOdd"规则:根据矢量图的奇偶填充规则,两个路径重叠的区域(也就是指针覆盖圆形的部分)会被排除在显示区域外,自然就形成了镂空。
  • 原来的白色指针路径可以直接删掉,因为现在圆形已经被裁出了指针形状的透明区,不需要额外绘制指针。

更简洁的替代方案(无需裁剪组)

除了裁剪路径,还可以直接把圆形和指针路径合并,用fillType="evenOdd"实现镂空,代码更短:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">

    <path
        android:pathData="M12,22.806C17.968,22.806 22.806,17.968 22.806,12C22.806,6.032 17.968,1.194 12,1.194C6.032,1.194 1.194,6.032 1.194,12C1.194,17.968 6.032,22.806 12,22.806Z M12,7.17V12L16.032,15.562"
        android:strokeWidth="1.5"
        android:fillColor="#003087"
        android:strokeColor="#003087"
        android:strokeLineCap="round"
        android:fillType="evenOdd"/>

</vector>

这个方法是把圆形和指针的路径合并成一个,通过evenOdd填充规则让重叠区镂空,效果和裁剪路径完全一致,代码更简洁。

内容的提问来源于stack exchange,提问作者Quinn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:59:51