ShapeDrawable (из PathShape) не отрисовывает правильные координаты - PullRequest
1 голос
/ 03 февраля 2012

Я пытаюсь создать 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), и он прыгает вокруг, и я не понимаю, когда вы меняете somenumber, где создается shapeDrawable.

Любая помощь или документация, котораяВы можете предложить, ценится.

1 Ответ

4 голосов
/ 09 июня 2012

Атрибуты someNumber на самом деле очень важны при определении вашего PathShape и не являются тривиальными. Они представляют собой «стандартную» ширину и высоту пути, по сути определяющие границы пути и относящиеся непосредственно к координатам, в которых вы определяете свой путь, как указано в конструкторе PathShape здесь .

Другим важным моментом является то, что координаты, которые вы используете для определения 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);
...