在安卓中使用 XML 形状设置绘制矩形



我有一个我不知道如何解决的问题。如果可以的话,请帮助我。在我的应用程序中,我必须创建自定义视图扩展视图。在这个视图中,我应该绘制很多矩形,并通过canvas.drawRect或canvas.drawRoundRect创建它们。很明显。但是我想创建这些矩形(带有渐变,角,填充等)的复合设计,并且我想在XML中执行这些设置(渐变,角,填充等)。我该怎么做?问题是我在XML中确定形状,我只能将此可绘制对象用作背景,但是当我绘制矩形时,我无法为矩形设置背景。也许还有另一种解决问题的方法。我是否可以使用 XML 形状对象不仅设置为背景,而且设置为具有 x,y 坐标和宽度、高度的视图对象?

编辑:我可以画矩形:

canvas.drawRect(x1, y1, x2, y2, paint);

但我在 XML 中有这样的矩形设置:

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
<!-- Specify a gradient for the background -->
    <gradient
    android:angle="90"
    android:startColor="#55000066"
    android:centerColor="#FFFFFF"
    android:endColor="#55000066" />
<!-- Specify a dark blue border -->
    <stroke 
    android:width="2dp"
    android:color="#000066" />
<!-- Specify the margins that all content inside the drawable must adhere to -->
    <padding
    android:left="5dp"
    android:right="5dp"
    android:top="5dp"
    android:bottom="5dp" />
<corners
    android:topLeftRadius="10dp"
    android:topRightRadius="10dp"
    android:bottomLeftRadius="10dp"
    android:bottomRightRadius="10dp" />
</shape>

我想将此设置应用于我的矩形。如何?

您可以从代码中加载和使用 XML 定义的可绘制对象,如下所示:

public class CustomView extends View {
    Drawable shape;
    public CustomView(Context context) {
        super(context);
        shape = context.getResources().getDrawable(R.drawable.shape);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        shape.setBounds(left, top, right, bottom);
        shape.draw(canvas)
    }
    // ... Additional methods omitted for brevity
}

相关内容

  • 没有找到相关文章

最新更新