2

私はシェイプを描画する方法を理解しています。Viewクラスを拡張し、をオーバーライドしてonDraw、新しいShapeDrawbale(Rectangle) を作成し、キャンバスに描画します。

    Rect rect = new Rect(x, y, x + width, y + height);
    shapeDrawable.setBounds(rect);
    shapeDrawable.getPaint().set(paint);
    shapeDrawable.draw(canvas);

次に、これをアクティビティ レイアウト xml で定義されたビューに追加します。これを行うには、ビューのハンドルを取得して呼び出します。

innerLinear.addView(rectView); // where rectView is my custom class that extends View

私の問題は、長方形を作成するときに、提供XしてY調整する必要があることです。

では、四角形を 内に正しく配置するにはどうすればよいinnerLayoutですか?

の境界を使用しinnerLayoutて長方形を作成する必要がありますか? もしそうならinnerLayout.getLeft()、またはinnerLayout.getTop()などを呼び出すと..常に0が返されます(レイアウトがまだ完全に完了していないと思います)。

別の方法はありますか?ここでかなり基本的なものが欠けているように感じます。

どんな助けでも大歓迎です、

ありがとう

4

1 に答える 1

2

このonDrawメソッドでは、次のAPIを使用できます。

xとyの場合、参照点は親ビューに対して0,0です。

getWidth() // This is in View
getHeight() // This is in View

上記のAPIを呼び出すCustomViewと、親ビューの正しいサイズが取得されます。この場合はinnerLayoutです。ここで、すべての領域をカバーする必要がある場合は、次のように記述します。

Rect rect = new Rect(0, 0, getWidth(), getHeight());

これはあなたを完全に満たしますCustomView。0、0が実際の画面座標にどのようにマッピングされるか、心配する必要はありません。前述したように、ビューの参照ポイントは0,0です。そしてAndroidは実際の画面座標を計算します。

詳細については、以下を参照してください。

カスタムコンポーネント

Androidの描画方法

于 2011-12-05T07:10:50.620 に答える