我正在创建一个Android应用程序,我想生成具有相同图像和不同位置的多个图像视图。我有一个图像类和for循环我创建了15个图像并将其添加到ArrayList并设置了增强的不同位置for循环,但现在它们是只有一个位置的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>
答案 0 :(得分:0)
您只创建了一个ImageView实例,并且正在引用此实例! 此外,您必须将图像添加到适当的Android布局!
您在Activity类中引用的当前布局是
R.layout.activity_play_second
你能提供这个布局吗?
看来,这个布局包含了一个ImageView
R.id.pumpkin_second
显示南瓜图像。我想,这不是你想要的!
将所有ImageView的动态创建放入for-Loop:
//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 / 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>
希望这有帮助吗?
问候
克里斯托弗