【问题标题】:How do you layer imageViews in an android application?如何在 android 应用程序中分层 imageViews?
【发布时间】:2013-09-16 17:49:58
【问题描述】:

我正在尝试创建我的第一个真正的 Android 应用,代码看起来很简单,但布局给我带来了问题。

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

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

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

  1. 将 3 个ImageViews 放在“背景”ImageView 上是否有意义,或者有更正确的方法吗?
  2. 如果我朝着正确的方向前进,有人可以解释/举例说明如何构建ImageView 层吗?

我当前屏幕的 XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <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="wrap_content"
       android:orientation="horizantal" >
       <ImageView
           android:id="@+id/imageView1"
           android:layout_width="0dp"
           android:layout_weight="1"
           android:layout_height="wrap_content"
           android:adjustViewBounds="false"
           android:src="@drawable/Circle" />
        <ImageView
           android:id="@+id/imageView2"
           android:layout_width="0dp"
           android:layout_weight="1"
           android:layout_height="wrap_content"
           android:adjustViewBounds="false"
           android:src="@drawable/Square" />
        <ImageView
           android:id="@+id/imageView3"
           android:layout_width="0dp"
           android:layout_weight="1"
           android:layout_height="wrap_content"
           android:adjustViewBounds="false"
           android:src="@drawable/Triangle" />
   </LinearLayout>
</LinearLayout>

【问题讨论】:

  • 您打算使用SDK拖放系统还是要自己实现?如果是,则为每个空图像使用 3 ImageViews。如果您要使用自己的拖动系统,那么我会制作一个自定义视图来保存空形状。
  • @Luksprog - 我计划使用在 SDK11 中实现的内置拖放功能。因为它,我正计划使用 3 个ImageViews,但我没有得到的是我如何将那个棕色的“拼图”图像放在我将添加的 3 个“空白”图像视图后面。那是第四个ImageView?如果是这样,我如何将一个 ImageView 放在另一个之上?
  • 我将简单地构建一个LinearLayout(或其他布局)来保存三个空的ImageViews,设置为该LinearLayout的背景棕色区域,然后将空形状设置为三个ImageViews 到背景颜色(我假设您想对空白区域进行透视效果)。为了更容易构建形状,您可以制作自定义视图来直接绘制它们,而不是使用 ImageViews。
  • @Luksprog - 感谢您的建议,我只是查看了背景,这可能对我有用,我会试一试。我还没有在构建形状或使用“自定义”视图方面做过任何事情。

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


【解决方案1】:

我最终使用的解决方案是添加一个新的LinearLayout 并将background 设置为“拼图基础”图像,并添加三个带有“空拼图”块的新图像.即:我将 3 个“空”拼图插槽中的每一个分解为单独的图像,如下例所示:

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

<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>

以最终的拖放游戏结束,如下所示:

它不漂亮,但我蹒跚学步的孩子喜欢它。 :)

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多