ACTION_CANCEL при касании

У меня есть следующий класс, который представляет собой View, который можно осязать и рисовать ползунок.

public class SlideBar extends View {
private int progress;
private int max;

private Paint background;
private Paint upground;

private RectF bar;

private boolean firstDraw;

public SlideBar(Context context, AttributeSet attrs) {
    super(context, attrs);
    progress = 0;

    upground = new Paint();
    upground.setColor(Color.parseColor("#C2296C"));

    background = new Paint();
    background.setColor(Color.parseColor("#777777"));
}

private void onFirstDraw() {
    max = getWidth();
    bar = new RectF(0, 19, max, 21);
}

public void onDraw(Canvas canvas) {
    if (!firstDraw) {
        onFirstDraw();
        progress = max;
        firstDraw = true;
    }

    canvas.save();
    canvas.drawRoundRect(bar, 5, 5, background);
    canvas.drawCircle(progress, 20, 9, upground);
    canvas.restore();
}

public void setValue(int value) {
    progress = value;
}

public boolean onTouchEvent(MotionEvent evt) {
    System.out.println(evt.getAction());
    progress = (int) evt.getX();
    invalidate();
    return false;
}
}

Но при касании и перетаскивании я получаю ACTION_DOWN, некоторые ACTION_MOVE затем получают ACTION_CANCEL и никаких других событий .

Почему это происходит? Я не хочу отменять событие и позволять ему продолжать перетаскивать полосу.

25
задан Marcos Vasconcelos 16 May 2011 в 13:41
поделиться