Java 选择在Android画布上绘制的单一视图

Java 选择在Android画布上绘制的单一视图,java,android,canvas,view,draw,Java,Android,Canvas,View,Draw,我是Android新手,发现了很多东西。但是现在我很累了。 我想做一个六边形棋盘游戏,用瓷砖。我找到了很多芭蕾舞短裙,最后决定画出我想画的六边形 我创建了一个从视图扩展的“Hex”类,添加了一些变量等等。以下是我在主XML布局中的内容: <flocoolb.app6.Hex android:layout_width="wrap_content" android:layout_height="wrap_content" flocoolb:r="50" andr

我是Android新手,发现了很多东西。但是现在我很累了。 我想做一个六边形棋盘游戏,用瓷砖。我找到了很多芭蕾舞短裙,最后决定画出我想画的六边形

我创建了一个从视图扩展的“Hex”类,添加了一些变量等等。以下是我在主XML布局中的内容:

<flocoolb.app6.Hex
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    flocoolb:r="50"
    android:id="@+id/h01"/>
<flocoolb.app6.Hex
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    flocoolb:r="50"
    flocoolb:x="75"
    flocoolb:y="43.30127"
    android:id="@+id/h02"/>
<flocoolb.app6.Hex
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    flocoolb:r="50"
    flocoolb:x="150"
    android:id="@+id/h03"/>

r=大小,x和y是画布上的偏移量。 以下是我在活动中得到的信息:

但现在我想选择单十六进制。例如,我想选择左上角的,或右下角的。我在每个视图上都添加了OnClickListener,但实际上视图的大小就是整个屏幕。 例如,如果我更改视图的背景颜色,它会更改整个屏幕上的颜色。是否可以将视图限制为绘制的线

我希望你能理解我的意思。
非常感谢:)

虽然,我不太了解您。但我建议您覆盖视图的onTouch方法。并在onTouch方法中实现您的功能。

尽管,我不太理解你。但我建议你重写视图的onTouch方法。并用onTouch方法实现你的功能。

每个十六进制占据整个屏幕。我在XML中声明了8个六边形,即我们在所附图片上看到的8个六边形。随着OnClickListener内部颜色的变化,我得到的是:此外,无论我触摸到什么十六进制,它都是foregroung上声明的最后一个。在OnClickListener中,如果我写“v.setVisibility(View.INVISIBLE);”,它们在XML布局中从最后一个到第一个都是不可见的。这里是我最后想要的:每个十六进制占据整个屏幕。我在XML中声明了8个六边形,即我们在所附图片上看到的8个六边形。随着OnClickListener内部颜色的变化,我得到的是:此外,无论我触摸到什么十六进制,它都是foregroung上声明的最后一个。在OnClickListener中,如果我写“v.setVisibility(View.INVISIBLE);”,它们在XML布局中从最后一个到第一个都是不可见的。下面是我最后想要的:我刚刚成功地更改了视图的背景色。我在Hex类中添加了一个方法“changeColor()”,该方法可以更改颜色、使视图无效并使用requestLayout()。然后在“OnClickListener”中,我从视图v获取ID,从该ID获取十六进制,并使用前面的方法“changeColor()”。太好了!但是现在我的问题在@wngxao的回答中描述了:视图占据了整个屏幕,因此,无论我在哪里触摸屏幕,所选视图都是XML布局中的最后一个视图。它可能会处理剪辑?我刚刚成功地更改了视图的背景色。我在Hex类中添加了一个方法“changeColor()”,该方法可以更改颜色、使视图无效并使用requestLayout()。然后在“OnClickListener”中,我从视图v获取ID,从该ID获取十六进制,并使用前面的方法“changeColor()”。太好了!但是现在我的问题在@wngxao的回答中描述了:视图占据了整个屏幕,因此,无论我在哪里触摸屏幕,所选视图都是XML布局中的最后一个视图,它可能处理剪切?