如何在Android应用程序中分层imageViews?

时间:2013-09-16 17:49:58

标签: android xml android-layout drag-and-drop android-imageview

我正在尝试创建我的第一个真正的Android应用程序,代码似乎很容易,但布局给我带来了问题。

我的应用程序将是一个拖放应用程序,非常简单,只需将形状拖动到“拼图”中的正确位置即可。以下是它现在的样子:

enter image description here

我目前所拥有的是4 ImageView s,一个用于顶部的“空拼图”,然后是下面每个形状的一个。我认为这样做的正确方法是让拼图中的每个空点都为ImageView(箭头所指的是,例如,应该是{{1} }})

如果我对此是正确的,我需要“分层”ImageView s,在顶部的“拼图”图像视图上放置3个“空形”图像视图。问题是我无法在网上任何地方找到任何示例或建议。所以我的问题是:

  1. 让3 ImageView坐在“背景”ImageView之上是否有意义,或者有更正确的方法吗?
  2. 如果我朝着正确的方向前进,有人可以解释/例证构建ImageView层的方式吗?

  3. 我当前屏幕的XML:

    ImageView

1 个答案:

答案 0 :(得分:1)

我最终使用的解决方案将新LinearLayout添加background设置为“拼图基础”图片,并添加了三个带有“空拼图”的新图片“它上面的碎片。也就是说:我将3个“空”拼图插槽中的每一个拆分为单个图像,如下例所示:

enter image description here

然后将它们用作新布局的背景,所以我之前有以下代码:

<ImageView
    android:id="@+id/emptyPuz"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/EmptyPuzzle" />

我现在有:

<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="0dp"
   android:layout_weight="1"
   android:background="@drawable/emptypuzzle"
   android:orientation="horizontal" >
   <ImageView
       android:id="@+id/dropsquare"
       android:layout_width="0dp"
       android:layout_weight="1"
       android:tag="square"
       android:layout_height="wrap_content"
       android:adjustViewBounds="false"
       android:src="@drawable/emptysquare" />
   <ImageView
       android:id="@+id/droptriangle"
       android:layout_width="0dp"
       android:layout_weight="1"
       android:tag="triangle"
       android:layout_height="wrap_content"
       android:adjustViewBounds="false"
       android:src="@drawable/emptytriangle" />
   <ImageView
       android:id="@+id/dropcircle"
       android:layout_width="0dp"
       android:layout_weight="1"
       android:tag="circle"           
       android:layout_height="wrap_content"
       android:adjustViewBounds="false"
       android:src="@drawable/emptycircle" />
</LinearLayout>

结果拖放游戏结果如下:

enter image description here

这不漂亮,但我的孩子喜欢它。 :)