我最近完成了simple drag and drop shapes game。它让用户将形状(ImageView
)拖到另一个"空的占位符" ImageView
。
我现在想要使它更先进,而不是拖动一个简单的形状,我想制作各种非正交形状的拼图,例如将一个圆形分成5个不同的部分。我现在遇到的问题是如何设计布局。我不知道如何制作真正的"定制"形状ImageView
,据我所知,从我的研究中发现它是不可能的。所以我现在的想法是重叠一些方ImageView
s,每个方形只有一个图像的子集,其余的是透明的。因此,最终输出看起来像是一些自定义形状的ImageView
。
示例:
+ + +
因为只有内部部分可见"可见"并且圆圈的其余部分是透明的,当所有这些部分放置在屏幕上的相同位置时,最终图像将如下所示:
我还没试过这个......但我预见至少有一个问题。当我把这些碎片拖到这个拼图上时,他们将会全部“啪”一声。拖到同一个地方时到位。因为实际上我真正拥有的是ImageView
内部的圆圈图片,其周围有一些不可见的矩形边界。
希望这种情况很明显。现在我的问题:
ImageView
而不是我对重叠图像的想法?注意:我是Android编程的新手,也是Java / XML的新手,它非常可能我忽略了某些东西,所以请随意建议其他方法,如你认为合适
答案 0 :(得分:1)
不是真的。重叠视图通常是它的完成方式。您也可以使用一个视图并自己覆盖绘图操作(在视图中的相对位置绘制多个位图),但这会使拖放方面变得更加困难。
如果视图的大小相同,并且每个视图中的可见部分位于正确的相对位置,则应正确拼接在一起。这是因为快照是(我相信)基于视图左上角的位置。如果比萨饼形状的可见部分是正确的,它应该恰好在正确的位置咬合。
答案 1 :(得分:0)
所以你有一些你想要接受滴剂的地方,我假设你知道它们的坐标,比如(d_x,d_y)
。
那么为什么不简单地监控你正在拖动的作品的图像视图的中心(p_x,p_y)
的坐标,比如“披萨”作品,以及当作品和落点之间的距离在可接受的范围内时金额接受下降。
但是如果你问是否有某种方法来制作非矩形图像,我不相信这是可能的。
但是我不认为在你的情况下是必要的,因为我相信即使你想让它们精确地拖动到位,你也可以计算可拖动矩形需要知道的形状的坐标。片断和矩形包裹片断的假设。