如何绘制具有可变笔触宽度的Android Shape Rectangle

时间:2015-12-16 21:22:01

标签: android android-canvas android-shape android-shapedrawable

我想绘制一个带孔的矩形。我试图通过使用Shape Rectangle来实现这一点。

<?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>

我试图找出如何在绘制此矩形时更改笔触宽度,以便Rectangle具有例如:顶部和底部边缘上的50 dp笔划宽度,但左右边缘上的20 dp。

我真的很感谢你的帮助。

3 个答案:

答案 0 :(得分:1)

以下是如何使用图层列表执行此操作的示例:我将更改左上角和右上角属性,如下所示:

<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"

答案 1 :(得分:0)

我假设,形状用作视图的背景(例如imageView)。 首先从Drawable获取imageView对象,然后从中获取Paint对象。然后,您可以修改任何所需的属性。

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

此处的相关问题:Set android shape color programmatically

答案 2 :(得分:0)

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