动态地将imageView设置在另一个imageView上

时间:2015-07-21 18:21:00

标签: android drag-and-drop imageview relativelayout

我编写像战舰一样的游戏。当一个玩家通过放下一个imageView(一艘船)把一艘船放在一个游戏场上时,我希望能够通过放置一个imageView来标记这艘船被击中,以便稍后再进行。

这是我到目前为止的布局(设置配置船只):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weightSum="1"
                android:background="@drawable/background_blue"
                android:layout_gravity="top|center_horizontal" >
        <ImageView
                android:id="@+id/imageSetzeSchiffe"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|top"
                android:src="@drawable/image_schiffe_setzen"
                android:contentDescription="@string/startscreen"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true">
        </ImageView>
        <ImageView
                android:id="@+id/imagePlayfield"
                android:layout_width="300dp"
                android:layout_height="280dp"
                android:src="@drawable/image_playfield"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="left|bottom"
                android:layout_below="@+id/imageSetzeSchiffe"
                android:layout_alignParentLeft="true"/>
        <ImageButton
                android:id="@+id/buttonDrehen"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/button_drehen"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="center"
                android:layout_alignBottom="@+id/imagePlayfield"
                android:layout_toRightOf="@+id/imagePlayfield"
                android:layout_marginLeft="24dp"/>

        <ImageButton
                android:id="@+id/buttonPlay"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/button_play"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="center"
                android:layout_alignBottom="@+id/buttonTurn"
                android:layout_toRightOf="@+id/imageShipCarrier"/>
        <ImageView
                android:id="@+id/imageShipCarrier"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/image_ship_carrier"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="center"
                android:layout_centerVertical="true"
                android:layout_toRightOf="@+id/buttonDrehen"/>
        <ImageView
                android:id="@+id/imageShipCruiser"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/image_ship_cruiser"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="center"
                android:layout_alignTop="@+id/imagePlayfield"
                android:layout_toLeftOf="@+id/imageShipGunboat"
                android:layout_marginRight="31dp"
                android:layout_marginTop="19dp"/>
        <ImageView
                android:id="@+id/imageShipGunboat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/image_ship_gunboat"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="center"
                android:layout_alignTop="@+id/imageShipCruiser" android:layout_alignRight="@+id/buttonSpielen"
                android:layout_alignEnd="@+id/buttonSpielen"/>
        <ImageView
                android:id="@+id/imageShipSubmarine"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/image_ship_submarine"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="center"
                android:layout_above="@+id/buttonSpielen" android:layout_alignRight="@+id/buttonSpielen"
                android:layout_alignEnd="@+id/buttonSpielen"/>
        <ImageView
                android:id="@+id/imageShipSpeedboat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/image_ship_speedboat"
                android:contentDescription="@string/startscreen"
                android:layout_gravity="center"
                android:layout_below="@+id/imageShipCruiser" android:layout_alignLeft="@+id/imageShipCruiser"
                android:layout_alignStart="@+id/imageShipCruiser"/>
</RelativeLayout>

对于拖放,我使用touchListener(对于被点击的船只)和dragListener用于放置区域(此处为:imagePlayfield)。

如何在以后加载另一个imageView(不在xml / layout中)并将其放在正在设置的船上?

1 个答案:

答案 0 :(得分:1)

使用框架布局将图像堆叠在一起,在堆叠中向上或向下移动元素,使其变为可见或交替隐藏。