有哪些选项可用于安排自定义ImageView

时间:2013-09-30 16:23:46

标签: android android-layout layout imageview

我最近完成了simple drag and drop shapes game。它让用户将形状(ImageView)拖到另一个"空的占位符" ImageView

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

示例:

enter image description here + enter image description here + enter image description here + enter image description here

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

enter image description here

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

希望这种情况很明显。现在我的问题:

  1. 是否可以拥有真正的自定义形状ImageView而不是我对重叠图像的想法?
  2. 如果我所想的是处理这个谜题想法的最佳方法,那么可以改变什么属性,以便" drop"对于所有这些拼图,动作不会发生在同一个地方?如果我想"掉落"披萨形状的一块,我希望它只有在靠近圆圈的左上方时才会卡入到位。
  3. 注意:我是Android编程的新手,也是Java / XML的新手,它非常可能我忽略了某些东西,所以请随意建议其他方法,如你认为合适

2 个答案:

答案 0 :(得分:1)

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

  2. 如果视图的大小相同,并且每个视图中的可见部分位于正确的相对位置,则正确拼接在一起。这是因为快照是(我相信)基于视图左上角的位置。如果比萨饼形状的可见部分是正确的,它应该恰好在正确的位置咬合。

答案 1 :(得分:0)

所以你有一些你想要接受滴剂的地方,我假设你知道它们的坐标,比如(d_x,d_y)

那么为什么不简单地监控你正在拖动的作品的图像视图的中心(p_x,p_y)的坐标,比如“披萨”作品,以及当作品和落点之间的距离在可接受的范围内时金额接受下降。


但是如果你问是否有某种方法来制作非矩形图像,我不相信这是可能的。

但是我不认为在你的情况下是必要的,因为我相信即使你想让它们精确地拖动到位,你也可以计算可拖动矩形需要知道的形状的坐标。片断和矩形包裹片断的假设。