Вы должны рассчитать местоположение пальца пользователя на событии ВНИЗ:
case MotionEvent.ACTION_DOWN:
mInitialPosY = event.getX();
mInitialPosY = event.getY();
break;
Тогда вам нужно иметь Rects ваших шестиугольников или узлов, которые вы можете перебирать вверх / вниз, чтобы увидеть, касается ли пользователь этого.
private final int isUserTouchingNode(int x, int y)
{
//Loop through rects of nodes
int nodeBeingTouched;
Rect node; //Rect of you node
for (int i = 0; i < nodes.length; i++)
{
node = nodes[i];
if (node.contains(x, y))
{
return i;
}
}
}
Тогда в вашем методе при рисовании вы можете увидеть, к какому из них прикоснулись, и нарисовать его по-другому, когда пользователь нажимает на экран, вид, к которому он в данный момент касается, автоматически аннулируется.
Вы также можете делать что-либо с помощью MOVE и UP, чтобы посмотреть, запустил ли пользователь / переместился из вида.
Примером является что-то вроде:
@Override
public boolean onTouchEvent(final MotionEvent event)
{
final int action = event.getAction();
mCurrentPosX = event.getX();
mCurrentPosY = event.getY();
switch (action)
{
case MotionEvent.ACTION_DOWN:
mInitialPosY = event.getX();
mInitialPosY = event.getY();
mStartingNode = isUserTouchingNode(mInitialPosX, mInitialPosY);
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
mEndingNode = isUserTouchingNode(mCurrentPosX, mCurrentPosY);
if(mStartingNode == mEndingNode){
doNodePressed(mEndingNode);//etc...
}
break;
}
return super.onTouchEvent(event);
}
Это ни в коем случае не полный рабочий пример, просто идея, с которой можно начать.