2

我最近完成了一个简单的拖放形状游戏。它让用户将一个形状 ( ImageView) 拖到另一个“空占位符” ImageView

我现在想让这个更高级一点,而不是拖动一个简单的形状,我想制作一个各种非正交形状的拼图,例如将一个圆分成 5 个不同的部分。我现在遇到的问题是如何设计布局。我不知道如何制作真正的“定制”形状ImageView,据我从研究中发现这是不可能的。所以我现在的想法是重叠一些 square ImageView,每个都只有一个图像的子集,其余的都是透明的。因此最终的输出看起来就像是一些自定义形状ImageView的 s。

例子:

在此处输入图像描述+ 在此处输入图像描述+ 在此处输入图像描述+在此处输入图像描述

因为只有内部部分是“可见的”,而圆圈的其余部分是透明的,所以当所有这些部分都放在屏幕上的同一位置时,最终图像将如下所示:

在此处输入图像描述

我还没有尝试过……但我预见到至少有一个问题。当我将这些碎片拖到这个拼图上时,它们会在拖到同一个地方时全部“卡入”到位。因为实际上我在这里真正拥有的只是 a 内的一个圆圈的图片,ImageView它周围有一些不可见的矩形边界。

希望这种情况是清楚的。现在我的问题:

  1. 是否有可能拥有真正自定义形状ImageView的 s 而不是我重叠图像的想法?
  2. 如果我的想法是处理这个拼图想法的最佳方式,那么可以更改哪些属性以使所有这些拼图的“掉落”动作不会发生在同一个地方?如果我想“放下”披萨形状的块,我希望它只有在靠近圆圈左上角时才卡入到位。

注意:我是 Android 编程的新手,对 Java/XML 也有些陌生,可能我忽略了一些东西,所以请随意提出您认为合适的其他方法。

4

2 回答 2

1
  1. 并不真地。重叠视图通常是它的完成方式。您也可以使用一个视图并自己覆盖绘图操作(在视图内的相对位置绘制多个位图),但这会使拖放方面变得更加困难。

  2. 如果视图的大小都相同,并且每个视图中的可见部分都处于正确的相对位置,则它们应该正确地对齐在一起。这是因为快照(我相信)基于视图左上角的位置。如果披萨形状的部分的可见部分在这方面是正确的,它应该在正确的位置卡入。

于 2013-09-30T16:30:59.967 回答
0

所以你有某些地方想要接受掉落物,我假设你知道它们的坐标,比如说(d_x,d_y)

那么为什么不简单地监视(p_x,p_y)您正在拖动的块的图像视图中心的坐标,比如“披萨”块,当块和放置点之间的距离在可接受的范围内时,接受放置。


但是,如果您问是否有某种方法可以制作非矩形图像视图,我认为这是不可能的。

但是我认为在您的情况下没有必要,因为我相信即使您希望他们将块精确地拖动到位,您也可以根据块的形状和知识计算可拖动矩形需要去的坐标假设矩形包裹了这块。

于 2013-09-30T16:40:13.330 回答