onDraw関数でgetDrawingCacheを呼び出しています。問題は、キャンバスへの変更が最初にのみ含まれ、その後は新しい変更でまったく更新されないことです。これが私のコードです:
paintAction.draw(canvas);
if (paintAction.isPermanentChange())
{
Bitmap partialBitmap=getDrawingCache();
int numColored=0;
for (int index1=0;index1<partialBitmap.getWidth();index1++)
{
for (int index2=0;index2<partialBitmap.getHeight();index2++)
{
if (partialBitmap.getPixel(index1,index2)==0xFF000000)
numColored++;
}
}
Log.i("PaintDroid","Bitmap pixels: " + numColored);
int areaWidth=partialBitmap.getWidth()-SCROLLBAR_SIZE;
int areaHeight=partialBitmap.getHeight()-SCROLLBAR_SIZE;
int[] pixels=new int[areaWidth*areaHeight];
partialBitmap.getPixels(pixels,0,areaWidth,0,0,areaWidth,
areaHeight);
numColored=0;
for (int index=0;index<pixels.length;index++)
if (pixels[index]==0xFF000000) numColored++;
Log.i("PaintDroid","Pixels: " + numColored);
(ビューの作成時にsetDrawingCache(true)が呼び出されます。これは、onDrawから呼び出すと、getDrawingCacheがnullを返すためです。)
ご覧のとおり、ビットマップをトラバースして配列の値を取得することで、黒いピクセルの数を数えています。前述したように、最初に期待した数を取得しましたが、その後は増えるはずだったのに、まったく変わらない!
誰かが何が悪いのか考えていますか?ありがとう。