Android ShapeDrawable(来自路径形状)未在正确的坐标上绘制

Android ShapeDrawable(来自路径形状)未在正确的坐标上绘制,android,drawable,shapedrawable,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 )); 然后我将ShapedRavable作为可绘制层的顶层,如下所示: D

我正在尝试创建一个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 ));
然后我将ShapedRavable作为可绘制层的顶层,如下所示:

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)开始的,当您更改
somenumber
构造shapeDrawable的位置时,它会以我不理解的方式跳跃

感谢您提供的任何帮助或文档

在定义
路径形状时,“someNumber”属性实际上是非常重要的,并且不是微不足道的。它们是路径的“标准”宽度和高度,基本上定义了路径的边界,并与在
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);
在定义
路径形状时,“someNumber”属性实际上非常重要,并且不是微不足道的。它们是路径的“标准”宽度和高度,基本上定义了路径的边界,并与在
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);