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 работают и показывают логические значения.

Есть идеи?? заранее спасибо

0 ответов

Другие вопросы по тегам