Android 检测用户是否绘制了整个屏幕

Android 检测用户是否绘制了整个屏幕,android,Android,我让用户在我的应用程序中进行绘制。绘制完整个屏幕后,应用程序将在屏幕上显示一些选项 我想保留一个屏幕像素数组,例如pixel=newint[width][height]并在绘制像素时标记它,但我想这是解决我问题的一个糟糕的方法 有没有办法检测用户是否绘制了整个屏幕 @Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOW

我让用户在我的应用程序中进行绘制。绘制完整个屏幕后,应用程序将在屏幕上显示一些选项

我想保留一个屏幕像素数组,例如
pixel=newint[width][height]并在绘制像素时标记它,但我想这是解决我问题的一个糟糕的方法

有没有办法检测用户是否绘制了整个屏幕

@Override
public boolean onTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
    case MotionEvent.ACTION_DOWN: {
        X = (int) ev.getX();
        Y = (int) ev.getY();
        break;
    }
    case MotionEvent.ACTION_MOVE: {
        X = (int) ev.getX();
        Y = (int) ev.getY();
        break;
    }
    return true;
}
@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas); 
    canvas.drawCircle(X, Y, 50, paint);
}

我认为你的方法(保持矩阵)可能是正确的,但如果画笔的大小远远大于1像素,保持低分辨率矩阵可能是有意义的:你可能不需要精确的像素精度。是的,这样用户就可以不用填充屏幕上的所有像素,但占用的内存要少得多。

除了使用数组跟踪像素的状态之外,我想不出其他方法了。但是,二维阵列比使用2个平行的一维阵列要慢。但是,把所有像素放在一个数组中,当绘制时,将其元素从数组中移除,怎么样?不必在整个数组中循环,只需将数组长度检查为0即可。

答案可能是创建位图。所有绘制都出现在位图中,并被快速显示到画布以保持同步

检查通过计时器和后台线程完成,后台线程定期调用Bitmap.copyPixelsToBuffer将数据复制到IntBuffer中。然后您可以一次遍历缓冲区一个像素(int32)。如果所有像素都是相同的值,您就知道屏幕已填充,您可以根据自己的喜好进行响应


更有效的实现可能会使用用户的绘图作为背景计时器的触发器,并将其自身限制为用户自上次检查以来绘制的边界的并集,而不是再次检查整个屏幕。

使用用户无法使用的背景色进行绘制。每当像素从背景颜色变为新颜色时,在计数器中添加一个(请参见广告建议)。

计数器如何代替阵列?每个像素翻转的像素+,然后检查它何时达到上限。用户可能在同一位置绘制,从而使像素++方法无效