如何绘制具有可变笔划宽度的Android形状矩形



我想画一个有洞的矩形。我正试图通过使用形状矩形来实现这一点。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:width="50dp"
        android:color="@color/red" />
</shape>

我正试图弄清楚在绘制矩形时如何更改笔划宽度,以便矩形的上下边缘笔划宽度为50 dp,左右边缘笔划宽度则为20 dp。

我真的很感谢你在这方面的帮助。

下面是一个如何使用层列表的例子:我将更改左上角和右上角的属性,如下所示:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent"/>
        </shape>
    </item>
    <item android:top="1dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/holo_blue_bright"/>
        </shape>
    </item>
    <item android:left="3dp">
        <shape android:shape="rectangle">
            <gradient android:angle="270" android:startColor="#8C2300" android:endColor="#D34617"/>
        </shape>
    </item>
    <item android:right="8dp">
        <shape android:shape="rectangle">
            <gradient android:angle="270" android:startColor="#000000" android:endColor="#ffc0cb"/>
        </shape>
    </item>
</layer-list>

将这个文件称为drawable文件夹中的layers.xml。然后将其作为背景应用于您的视图,如下所示:

android:background="@drawable/shape"

我认为,该形状被用作视图的背景(例如imageView)。因此,首先从imageView获取Drawable对象,然后从中获取Paint对象。然后,您可以修改任何您想要的属性。

Drawable background = imageView.getBackground();
if (background instanceof ShapeDrawable) {
    // cast to 'ShapeDrawable'
    ShapeDrawable shapeDrawable = (ShapeDrawable)background;
    shapeDrawable.getPaint().setStrokeWidth(...);
}

此处的相关问题:以编程方式设置android形状颜色

感谢大家的帮助。我最终覆盖了onDraw()来清除布局的背景颜色,从而使用setXfermode()创建矩形孔。

相关内容

  • 没有找到相关文章

最新更新