2013-08-27 58 views
0

我正在創建一個android應用程序,我想用同一圖像和不同位置產生多個imageviews。我有一個圖像類和for循環我創建了15個圖像並將其添加到ArrayList和設置differen位置增強的for循環,但現在他們只有一個15倍的圖像,它看起來像我的代碼Android Spawn多個ImageView與不同位置

1個image.Look這是主類

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> 
+0

沒有你實現這一點?即使我面臨同樣的問題 – AndroidOptimist

回答

0

你只是創建的ImageView的一個實例,並引用的正是這種情況! 此外,您必須將圖像添加到適當的Android佈局!

你在你的Activity類談到現在的佈局是

R.layout.activity_play_second 

你能提供,其佈局這是什麼?

看來,這個佈局持有的ImageView

R.id.pumpkin_second 

顯示的南瓜形象。我想,這不是你想要的!

把動態創建的所有ImageViews到您的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); 

您需要位於佈局文件內部的Container視圖的ID。 下面是一個例子佈局文件(RES /佈局/ 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> 

希望這有助於?

問候

克里斯托弗

+0

我把它放到for循環,但我不能使用addView(iv),它說添加投到方法reciever,我添加了這個投,它仍然是錯誤的:( – Developer

+0

嗨。結果這.findViewById必須轉換到的ViewGroup: 的ViewGroup myLayout =(的ViewGroup)this.findViewById(R.layout.activity_play_second); myLayout.addView(myImageView); –

+0

這是錯誤:該方法addView(ImageView的)是未定義的鍵入查看 – Developer

相關問題