圆形按钮

Fab*_*ook 7 java android views button

我希望有这样的五个按钮,一个按钮被其他四个按钮包围.像这样:

在此输入图像描述

我知道使用Android我们只能有方形类型的视图,那么如何才能做到这一点呢?OpenGl还是什么?任何人有任何相关的链接?基本上我想要靠近的弯曲按钮.

Ted*_*opp 3

我的猜测是,最终在自定义视图中执行此操作会更容易。

但如果您想使用股票视图,我建议如下。首先,使用RelativeLayout 容器将四个外部按钮排列在2x2 网格中。然后放置中心按钮,使其与中心的网格重叠。将中心按钮放置在比周围四个按钮更高的 Z 位置(更靠近用户)。然后使用透明度作为按钮图像的一部分,使它们看起来像您想要的那样。然后(希望)尝试一下。如果 Z 顺序正确,则中心按钮将捕获其他四个按钮之一的点击。

这实际上不会按原样工作,因为中心按钮方块会侵入周围的方块。我不知道它是否有效,但您可以尝试用另一个按钮“块”网格替换中心按钮。除了中心按钮图像与网格单元重叠的位置之外,网格将具有空位置。您必须使其足够精细,以避免侵入外部按钮图像。

编辑

我突然想到,也许您可​​以使用一组TouchDelegate对象来做到这一点。您将按照我首先描述的方式排列按钮,但仅使容器可单击。它将使用 5TouchDelegate秒来找出哪个按钮(如果有)位于点击坐标下。不幸的是,TouchDelegate只适用于Rect受影响的区域,这让我们回到了起点。但是,您可以拆解TouchDelegate 的源并定义自己的版本,该版本接受某种通用形状类,而不仅仅是Rect. (形状类必须具有相当于Rect.contains()测试命中的功能。Android 中没有内置任何内容,但您可以轻松地为您拥有的特定形状编写自己的类。)

您可以通过将命中和委托逻辑直接放在父容器视图中来稍微简化代码,但我认为,拥有一个可重用的委托类将事件处理与容器本身分开会更干净。