Android:如何用XML/Vector实现信封样式背景?
用Vector Drawable实现带顶部透明三角形的纯色矩形
当然可以!Android的Vector Drawable完全能搞定这个需求,而且矢量图在任何分辨率下都不会模糊,简直是完美选择。下面直接给你实现代码和详细解释:
完整Vector代码示例
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="200dp" android:height="150dp" android:viewportWidth="200" android:viewportHeight="150"> <!-- 带顶部镂空三角形的矩形 --> <path android:fillColor="#FF6200EE" <!-- 替换成你需要的纯色填充 --> android:fillType="evenOdd" <!-- 关键:奇偶填充模式实现镂空 --> android:pathData="M0,0 L200,0 L200,150 L0,150 L0,0 M90,0 L100,10 L110,0 L90,0" /> </vector>
代码细节说明
- 视图坐标系:
android:viewportWidth和android:viewportHeight是Vector的虚拟画布尺寸,我这里设为200x150,用整数坐标更容易调整形状。width和height是Drawable的实际显示尺寸,你可以按需修改。 - 路径绘制逻辑:
- 第一行路径
M0,0 L200,0 L200,150 L0,150 L0,0是绘制一个完整的大矩形,覆盖整个Vector区域。 - 第二行路径
M90,0 L100,10 L110,0 L90,0是在矩形顶部中心绘制一个小三角形,顶点向下深入矩形内侧10个单位(对应viewport的坐标)。
- 第一行路径
- 镂空实现核心:
android:fillType="evenOdd"是关键属性,这个填充规则会让路径的重叠区域(也就是三角形所在的位置)不被填充,直接呈现透明效果,完美透出下层内容,不管你的背景是纯色还是复杂图案都适用。
自定义调整建议
- 修改三角形大小:调整
90,0、100,10、110,0这三个坐标——比如把90和110改成85和115,三角形就会更宽;把10改成15,三角形就会更长。 - 更换矩形颜色:直接修改
android:fillColor的值即可,支持ARGB颜色码。 - 调整整体尺寸:修改
android:width和android:height的dp值,或者调整viewport的数值来精细控制比例。
内容的提问来源于stack exchange,提问作者Dionis Beqiraj
相关产品推荐
相关产品推荐

