更改屏幕后多次使用getPixels()捕获屏幕

时间:2018-12-29 15:32:54

标签: java android bitmap pixel getpixel

在我的应用中,开始时屏幕为黄色。触摸时会在该位置绘制一个蓝色圆圈。我希望我的应用检查屏幕何时为全蓝。我通过添加一种控制方法来尝试此操作,该方法在draw方法的末尾检查屏幕。所有使用的变量均已正确声明。

问题似乎是保存屏幕颜色值的像素数组没有更新。我发现任何时候数组中的所有值都等于黄色值。但是,如果问题出在位图或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;
}

}

0 个答案:

没有答案