Android ACTION_POINTER_DOWN не меняет логическое значение
Я пытался обнаружить несколько касаний в разных областях пользовательского представления. При касании определенной области счетчик увеличивается, и булевы значения устанавливаются в true. Несколько областей могут быть затронуты одновременно, и только когда все указатели удалены, определенный тост отображается на экране.
При касании экрана счетчик нормально поднимается и опускается, но логические значения не меняются... Я не понимаю, почему.
Вот мой код
public class Multitouch extends View {
private Context c;
private int cuenta;
public boolean b1;
public boolean b2;
public boolean b3;
public boolean b4;
public boolean b5;
public boolean b6;
public boolean be;
public Multitouch(Context context, AttributeSet attrs)
{
super(context, attrs);
c = context;
cuenta = 0;
b1 = false;
b2 = false;
b3 = false;
b4 = false;
b5 = false;
b6 = false;
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch (event.getActionMasked())
{
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_DOWN:
cuenta++;
Toast.makeText(c, "x: " + event.getX() + " y: " + event.getY(), Toast.LENGTH_SHORT).show();
if ((event.getX() >= 630) && (event.getX() <= 800)
&& (event.getY() >= 0) && (event.getY() <= 130))
b1 = true;
else if ((event.getX() >= 630) && (event.getX() <= 800)
&& (event.getY() >= 131) && (event.getY() <= 265))
b2 = true;
else if ((event.getX() >= 630) && (event.getX() <= 800)
&& (event.getY() >= 266) && (event.getY() <= 390))
b3 = true;
else if ((event.getX() >= 0) && (event.getX() <= 170)
&& (event.getY() >= 0) && (event.getY() <= 130))
b4 = true;
else if ((event.getX() >= 0) && (event.getX() <= 170)
&& (event.getY() >= 131) && (event.getY() <= 265))
b5 = true;
else if ((event.getX() >= 0) && (event.getX() <= 170)
&& (event.getY() >= 266) && (event.getY() <= 390))
b6 = true;
Toast.makeText(c, ""+b1+b2+b3+b4+b5+b6+cuenta, Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_POINTER_UP:
cuenta--;
break;
case MotionEvent.ACTION_UP:
cuenta--;
if (cuenta == 0)
{
if(b1 && !b2 && !b3 && !b4 && !b5 && !b6)
Toast.makeText(c, "hello", Toast.LENGTH_SHORT).show();
if(b1 && b2 && !b3 && !b4 && !b5 && !b6)
Toast.makeText(c, "how", Toast.LENGTH_SHORT).show();
if(b1 && !b2 && !b3 && b4 && !b5 && !b6)
Toast.makeText(c, "are", Toast.LENGTH_SHORT).show();
if(b1 && b2 && !b3 && b4 && !b5 && !b6)
Toast.makeText(c, "you", Toast.LENGTH_SHORT).show();
}
b1 = false;
b2 = false;
b3 = false;
b4 = false;
b5 = false;
b6 = false;
break;
default:
break;
}
return true;
}
...
}
Toast.makeText(c, ""+b1+b2+b3+b4+b5+b6+cuenta, Toast.LENGTH_SHORT).show()
всегда срабатывает, показывая, что MotionEvent.ACTION_POINTER_DOWN
и MotionEvent.ACTION_DOWN
работают и показывают логические значения.
Есть идеи?? заранее спасибо