0

Androidアプリケーションを作成していますが、同じ画像と異なる位置で複数の画像ビューを生成したいと考えています。画像のクラスがあり、forループを使用して15個の画像を作成し、それをArrayListに追加して、強化されたforループで異なる位置を設定します。しかし、今は1つの位置しかない15の画像で、1つの画像のように見えます.私のコードを見てください

これがメインクラス

private ImageView pumpkinImg;
private int imageY = 50;
private int imageX = 50;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_play_second);

    pumpkinImg = (ImageView) findViewById(R.id.pumpkin_second);

    ArrayList<Pumpkin> pumpkins = new ArrayList<Pumpkin>();
    for(int i = 0; i < 15; i ++){
        Pumpkin p = new Pumpkin(pumpkinImg);

        pumpkins.add(p);
    }
    for(Pumpkin pmk : pumpkins){

        pmk.setV(pumpkinImg);
        pmk.setPosX(pmk.getV(), imageX);
        pmk.setPosY(pmk.getV(), imageY);

        imageX += 20;
        imageY += 20;
    }


}

そして、これが私のカボチャのクラスです

public class Pumpkin {

private int x;
private int y;
ImageView v;

public Pumpkin(ImageView v){


}

public void setPosX(ImageView v,int posX){
    v.setX(posX);
}
public void setPosY(ImageView v,int posY){
    v.setY(posY);
}

public ImageView getV() {
    return v;
}

public void setV(ImageView v) {
    this.v = v;
}

}

ここに私のXMLファイルがあります:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="150dp"
    android:text="@string/level_two_welcome"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<ImageView
    android:id="@+id/pumpkin_second"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/level_2" />

</RelativeLayout>
4

1 に答える 1

0

ImageView のインスタンスを 1 つだけ作成し、このインスタンスを正確に参照しています! さらに、画像を適切な Android レイアウトに追加する必要があります。

Activity クラスで参照している現在のレイアウトは

R.layout.activity_play_second

これはどのレイアウトですか?

このレイアウトは ImageView を保持しているようです

R.id.pumpkin_second

カボチャの画像を表示します。これはあなたが望むものではないと思います!

すべての ImageView の動的な作成を for ループに入れます。

//create ImageView from drawable resource
ImageView iv = new ImageView( this );
iv.setBackgroundResource( R.drawable.my_resource );

//add to main layout
( (ViewGroup)this.findViewById( R.layout.activity_play_second ) ).addView( iv );

完全なコード サンプルを見つけてください - リソース識別子を必ず調整してください。

    setContentView( R.layout.my_layout );
    ViewGroup view = (ViewGroup)findViewById( R.id.my_container_id_in_my_layout );

    ImageView iv = new ImageView( this );
    iv.setImageResource( R.drawable.my_drawable_resource );

    ImageView iv2 = new ImageView( this );
    iv2.setImageResource( R.drawable.my_drawable_resource );

    view.addView( iv  );
    view.addView( iv2 );

レイアウト ファイル内にあるコンテナ ビューの ID が必要です。レイアウト ファイルの例 ( res/layout/my_layout.xml ) を次に示します。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/my_container_id_in_my_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        />

</RelativeLayout>

お役に立てれば?

ご挨拶

クリストファー

于 2013-08-27T11:42:23.713 に答える