【问题标题】:Dynamicially set an imageView over another imageView在另一个 imageView 上动态设置一个 imageView
【发布时间】:2015-07-21 18:21:00
【问题描述】:

我编写了战舰之类的游戏。当玩家通过放置一个 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/布局中)并将其放在正在设置的船上?

【问题讨论】:

  • imageView 已被用户定位,我试图找出它被丢弃的位置。那么您声明的解决方案/链接是否反映了应该放置另一个 imageView 的 imageView 是否已经实例化?
  • @TheHungryAndroider 谢谢!如何在同一个 imageView 上多次设置这些可绘制对象?由于一艘船在沉没之前可能会受到多次撞击,因此 imageView 需要将多个图像作为图层。如何设置图层的坐标?
  • 您可以继续在彼此之上创建 LayerDrawables
  • 我怎样才能改变被放在另一个图像之上的图像的大小或影响确切的位置?当我合并两张图片时,第二张被拉伸到另一张上,失去了原来的大小。

标签: android drag-and-drop imageview android-relativelayout


【解决方案1】:

使用框架布局,图像相互堆叠,在堆栈中向上或向下移动元素,使其交替可见或隐藏。

【讨论】:

  • 当船被拖拽时,是否可以在另一个 ImageView(船)上堆叠一个 ImageView(命中的图像)?
  • 您可能会触发上述布局更改 onDragged。我还没有尝试过,但从概念上讲它可能有效。
  • 我确实在 oprimising 坐标和设置 imageview 之前触发了布局更改。我没有完全按照我上次评论的意思,抱歉。如果发生特殊事件(当船通过坐标比较被击中时),布局应该发生变化。
  • 是的,在您的特别活动中。首先尝试将您的所有图像视图替换为框架布局,然后将您的两个图像,即:船舶和破坏图像放在 2 个图像视图中。框架布局会自动堆叠它们。
  • 我为什么要使用FrameLayout?我尝试了您的建议,并且命中图像完全覆盖了船舶图像。船上需要有几个被击中的图像,因为它会在被击中后被摧毁(即:2个小1和5个最大的船)。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
相关资源
最近更新 更多