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

somenumberここでの問題は、パスが (50,20) から始まらず、shapeDrawable が構築されている場所を変更すると、理解できない方法でジャンプすることです。

提案できるヘルプやドキュメントは大歓迎です。

4

1 に答える 1

4

「someNumber」属性は、実際には を定義するときに非常に重要PathShapeであり、些細なことではありません。これらは、パスの「標準」の幅と高さであり、基本的にパスの境界を定義し、PathShapeコンストラクターhere で指定されているパスを定義する座標に直接関連しています。

もう 1 つの重要な点は、定義に使用する座標はPath、a に関する限り絶対座標ではPathShapeなく、標準の幅と高さと組み合わせて、拡大縮小したときに形状がどのように表示されるかを計算することです。たとえば、次の 2 つ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);
于 2012-06-09T16:11:37.943 に答える