Android游戏板有不规则的板空间

时间:2015-12-29 17:33:09

标签: android

我正在创建一个Android棋盘游戏,其中有几个不同形状的棋盘空间(如风险)。

我想确保我的电路板看起来是正确的,并且无论屏幕大小/分辨率如何,OnTouchListeners都会保留在GUI上。

我想到的可能解决方案及其问题:

  1. 为电路板创建单个图像,并根据像素几何图形指定OnTouchListeners。问题:如果用户的显示器分辨率不同,我的监听器可能与我的图像不在同一像素下(对吗?)

  2. 创建多个ImageButtons并将它们排列在一起。问题:ImageButtons可能会根据显示重新排列,最终会出现重叠的空格或间隙。

  3. 使用Android自定义绘图。如果我这样做,我如何将我的听众链接到我的画布并确保它们已同步?
  4. 基本问题: 如何确保侦听器与使用不规则几何体的GUI中的图形同步?

1 个答案:

答案 0 :(得分:0)

我在一个有不规则触摸区域的应用程序上工作,所以我可以通过一种方式为您提供指导。

从整个电路板的单个图像开始。无论任何设备分辨率如何,此图像都将具有一定的(“固有”)宽度和高度。

现在这里是繁琐的部分。您(或者您的平面设计师)需要为每个触摸区域绘制出不规则多边形的坐标。这些将是您的应用程序的常量。

当您显示电路板时,如果要在图像上进行缩放和平移,则需要跟踪显示的变换矩阵。当用户触摸屏幕时,您将获得OnTouchListener的x,y坐标,并且对于那些有用的坐标,您将必须“解变”x,y以将其与电路板的固有尺寸标准化和你的多边形。

我们使用http://alienryderflex.com/polygon/中的算法推出了自己的命中测试逻辑,但您也可以尝试这样做:从多边形坐标中创建Path(使用moveTo(),{{ 1}}和lineTo()),然后使用close()Path分配给Region。一旦你拥有了它,据说你应该能够使用Region.setPath()进行测试,但我从未尝试过,所以我不能保证它会起作用。