2011-12-05 12 views
1

私は、私はその後、キャンバスに描くれ、Viewクラスを拡張し、私は新しいShapeDrawbale(長方形)を作成onDrawをオーバーライドしています、私図形を描画する方法を理解する:どのようにして、指定されたサイズのAndroidに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 

私の問題は、四角形を作成するときに、あなたがXY座標を提供しなければならないということです。

したがって、どのように矩形を正しく配置するにはinnerLayout

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

別の方法がありますか? 私はここでかなり基本的な何かを逃しているように感じる。

任意の助けを大幅に次のAPIを使用することができonDraw方法において、

おかげ

答えて

2

を理解されるであろう:xおよびyについて

を、基準点は、親に対して0,0でありますビュー。

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

あなたは上記のAPIを呼び出すときに、あなたのCustomViewあなたはあなたのケースでinnerLayoutある親ビューの右の寸法を取得します。これは完全にあなたのCustomViewを記入します

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

:私はすべてのエリアをカバーするために持っている場合今、私のような何かを書くでしょう。あなたの0、0が実際の画面座標にどのようにマッピングされているか、あなたはそれについて心配しないでください。私が言及したように、ビューの参照ポイントは0,0です。アンドロイドは実際の画面座標を計算します。

Custom Components

How Android draws

:さらに参照するため

関連する問題