圆形按钮

我想要这样的五个按钮,其中一个按钮由四个其他按钮环绕。 像这样:

我知道,使用Android,我们只能使用方形视图,因此如何才能做到这一点? OpenGl什么的? 任何人有任何相关的链接? 基本上我想要弯曲的按钮靠得很近。


我的猜测是,在一天结束时,在自定义视图中执行此操作会更容易。

但如果你想使用股票的意见,我会建议如下。 首先,使用RelativeLayout容器将四个外部按钮排列在2x2网格中。 然后放置中心按钮,使其与中心网格重叠。 将中央按钮放在比周围四个按钮更高的Z(比用户更近)。 然后使用透明度作为按钮图像的一部分,让它们看起来像你想要的。 然后(希望)尝试一下。 如果Z顺序是正确的,中心按钮将捕获否则会转到另外四个按钮中的一个按钮。

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

编辑

我想到,也许你可以用一组TouchDelegate对象来做到这一点。 您将按照我之前介绍的方法排列按钮,但只能使父容器可点击。 它会使用五个TouchDelegate来找出哪个按钮(如果有的话)是在水龙头坐标下。 不幸的是, TouchDelegate仅适用于Rect命中区域,这使我们开始了我们的起点。 但是,您可以调整TouchDelegate的源代码并定义您自己的版本,该版本接受某种通用形状类而不仅仅是Rect 。 (形状类必须具有相当于Rect.contains()才能测试的结果,没有内置到Android中,但是您可以轻松地为自己的特定形状编写自己的类。)

通过将命中和委托逻辑直接放在父容器视图中,你可以简化代码,但是我认为,将一个可重用的委托类从容器本身分离出来是更加清晰的。


例如,您可以使用遮罩颜色:一个完全红色的按钮,就像您发布的图像一样,只需对红色按钮执行像素颜色检查,如下所示:

bool insideMyAwsomeShapeButton(int mouse_x,int mouse_y) {
      if get_image_pixel_color_at_pos(mouse_x,mouse_y) == rgbcolor(1,0,0)
    {
             return true;
    }

            return false; }

再次,这只是一个想法,你必须找出具体的API在Android上做任务,像检查像素颜色。

链接地址: http://www.djcxy.com/p/63313.html

上一篇: Rounded buttons

下一篇: Configure DataImportHandler in SolrCloud with ZooKeeper