0

Viewを拡張するクラスBallがあります。その中に、いくつかの特性を与え、onTouchEvent()を実装して、動きを処理できるようにします。また、onDrawを使用して、ボールのビットマップを描画できるようにします。私のアクティビティクラスでは、新しいレイアウトを作成し、それにビューを追加して表示できるようにします。レイアウトにボールを追加しようとすると表示されない場合を除いて、すべて正常に動作します!レイアウトで最初に追加されたボールが常に表示されます!アクティビティクラスのonCreateコードは次のとおりです。

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.HORIZONTAL);
    int lHeight = LinearLayout.LayoutParams.WRAP_CONTENT;
    int lWidth = LinearLayout.LayoutParams.WRAP_CONTENT;

    Point point1 = new Point();
    point1.x = 50;
    point1.y = 20;
    Point point2 = new Point();
    point2.x = 100;
    point2.y = 20;
    Point point3 = new Point();
    point3.x = 150;
    point3.y = 20;

    ColorBall ball1 = new ColorBall(this,R.drawable.bol_groen, point1);
    ll.addView(ball1, new LinearLayout.LayoutParams(lHeight, lWidth));
    setContentView(ll);

    ColorBall ball2 = new ColorBall(this,R.drawable.bol_rood, point2);
    ll.addView(ball2, new LinearLayout.LayoutParams(lHeight, lWidth));
    setContentView(ll);

    ColorBall ball3 = new ColorBall(this,R.drawable.bol_blauw, point3);

    ll.addView(ball3, new LinearLayout.LayoutParams(lHeight, lWidth));
    setContentView(ll);        

}

最後にsetContentView()を1つだけ使ってみましたが、レイアウトを使用できないので、カスタムビューにあるビットマップを描画できると思います!コードを変更してビューを作成し、その中に表示したいすべてのボールを含む配列を作成してから、このビューをメインクラスのアクティビティから表示するように設定する必要がありますか?(このsetContentView(customview)など)。

4

1 に答える 1

0

setContentViewアクティビティの初期化ごとに 1 回だけ呼び出すことが期待されているのに、複数回呼び出しています。

更新

プログラムによる方法ではなく、このレイアウト xml を使用できますか? これは、ColorBalls を追加するコンテナーが正常であることを 100% 確認するためのものです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@+id/container"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" />

念のため、これをアクティビティに含めるコードを次に示します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.your_name_of_layout);

    LinearLayout container = (LinearLayout) findViewById(R.id.container);
    ..
    container.addView(ball1);
    container.addView(ball2);
    ..
}
于 2011-02-17T20:06:10.180 に答える