2015-07-21 72 views
0

我编写了一个像战舰一样的游戏。当一个玩家通过放下一个imageView(一艘船)将一艘船放在一个游乐场上时,我希望能够通过放置一个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中)并将其放置在正在设置的船上?

+0

http://stackoverflow.com/questions/2739971/overlay-two-images-in-android-to-set-an-imageview –

+0

imageView已被用户定位,我试图找出它在哪里被丢弃。那么你说的解决方案/链接反映了imageView应该放在哪里的imageView已经被实例化了? – Pille

+0

@TheHungryAndroider谢谢!我怎样才能在同一个imageView上多次绘制这些drawable?由于船舶在下沉之前可能会发生几次撞击,因此需要imageView将多个图像作为图层。我怎样才能设置图层的坐标? – Pille

回答

1

使用相互堆叠图像的框架布局,将元素在堆叠中向上或向下移动,以使其变为可见或隐藏。

+0

拖船时,是否可以在另一个ImageView(船)上堆叠ImageView(点击图像)? – Pille

+0

您可能会触发上面提到的在Dragged上的布局更改。我没有尝试过,但从概念上说它可能工作。 – Y2K

+0

在确定坐标并设置图像视图之前,我确实触发了布局更改。我的意思并不是我最后一次评论的意思,对不起。如果发生特殊事件(当船舶通过坐标比较得到命中时),布局应该发生变化。 – Pille