1

我正在尝试创建一个绘制以下路径的 ShapeDrawable:

Path path = new Path();
path.moveTo(50, 20);
path.lineTo(0, 50);
path.lineTo(50, 100);

ShapeDrawable shapeDrawable = new ShapeDrawable(new PathShape(path, someNumber ,someNumber ));

然后我把 shapeDrawable 作为图层可绘制的顶层,如下所示:

Drawable layers[] = new Drawable[2];
layers[0] = res.getDrawable(R.drawable.crawford01);
layers[1] =  shapeDrawable;

LayerDrawable layerDrawable = new LayerDrawable(layers);
view.setImageDrawable(layerDrawable);

现在的问题是路径不是从 (50,20) 开始的,当你改变somenumbershapeDrawable 的构造位置时,它会以我不明白的方式跳跃。

您可以建议的任何帮助或文档将不胜感激。

4

1 回答 1

4

在定义您的 时,“someNumber”属性实际上非常重要PathShape,而且并非微不足道。它们是路径的“标准”宽度和高度,本质上定义了路径的边界,并与您在此处PathShape的构造函数中指定的定义路径的坐标直接相关。

另一个重要的一点是,就 a 而言,您用来定义您Path的坐标并不是绝对坐标PathShape,而是与标准宽度和高度相结合,以计算您的形状在缩放时的显示方式。比如下面两个PathShapes本质上是一样的。

public Path getPath1 {
    Path path = new Path();
    path.lineTo(0, 1);
    path.lineTo(1, 0);
    path.close();
    return path;
}

public Path getPath2 {
    Path path = new Path();
    path.lineTo(0, 10);
    path.lineTo(5, 0);
    path.close();
    return path;
}

PathShape shape1 = new PathShape(getPath1(), 1, 1);
PathShape shape2 = new PathShape(getPath2(), 5, 10);
于 2012-06-09T16:11:37.943 回答