Захват экрана с помощью getPixels () несколько раз после изменения экрана - PullRequest
0 голосов
/ 29 декабря 2018

В моем приложении экран желтый, когда мы начинаем.На ощупь синий круг нарисован в этом месте.Я хочу, чтобы мое приложение проверяло, когда экран полностью синий.Я попробовал это, добавив метод контроля, который проверяет экран в конце метода рисования.Все используемые переменные объявлены правильно.

Кажется, проблема в том, что массив пикселей, содержащий значения цвета экрана, не обновляется.Я обнаружил, что в любое время все значения в массиве равны значению желтого цвета.Но я не знаю, если проблема в растровом изображении или getPixels.

Что я делаю не так?

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

public void control(){

    bitmap = this.getDrawingCache(true);
    bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());

    check = true;
    for(int i=0; i<pixels.length;i++){
        if(pixels[i] == coloryellow){
            check = false;
            break;
        }
    }
}

@Override
public void draw(Canvas canvas) {
    super.draw(canvas);
    canvas.drawColor(Color.YELLOW);
    paint.setColor(Color.BLUE);
    for (Circle temp : circleList) {
        canvas.drawCircle(temp.x, temp.y, temp.radius, paint);
    }

    control();

    if(check){
        canvas.drawText("Gewonnen",100,500, paint);
    }
}

@Override
public boolean onTouchEvent(MotionEvent event){

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            break;
        case MotionEvent.ACTION_MOVE:
            break;
        case MotionEvent.ACTION_UP:
            circleList.add(new Circle(event.getX(),event.getY(),screenX/8));
            number++;
            invalidate();

            break;
    }
    return true;
}

}

...