ShapeDrawable(来自PathShape)没有绘制正确的坐标

时间:2012-02-03 17:45:11

标签: android drawable shapedrawable

我正在尝试创建一个绘制以下路径的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作为Layer drawable的顶层,如下所示:

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)开始,当你改变构造shapeDrawable的somenumber时它会以我不明白的方式跳转。

我们非常感谢您提供的任何帮助或文档。

1 个答案:

答案 0 :(得分:4)

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

另一个重点是,就Path而言,用于定义PathShape的坐标不是绝对坐标,而是与标准宽度和高度相结合来计算在缩放时出现形状。例如,以下两个PathShape基本相同。

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);