Я работаю над простым приложением с анимацией. Я использую стандартный вид. В методе onDraw мое приложение рисует фон (хранится как растровое изображение) и пару спрайтов. В основном цикле мне нужно изменить растровое изображение фона (код прилагается). Я использую этот метод setPixel(). Время от времени, когда я пытаюсь изменить растровое изображение, я получаю в LogCat такое сообщение: «Невозможно создать текстуру из растрового изображения». После этого на экране все еще появляется, но я не могу использовать ни методы getPixel(), ни setPixel(). Я нашел некоторый намек на то, что это связано с тем, что битмап был переработан, но я добавил некоторые элементы управления в свое приложение, и после этого «crash» bitmap.isRecycled() по-прежнему является false и bitmap.isMutable() по-прежнему верен. Итак, я понятия не имею, в чем проблема.Сбой битмапа с сообщением «Can not generate texture from the bitmap»
public void drawOnBmp (float xF, float yF, float r) {
float[][] kolo;
float xP, yP;
float xStart, yStart;
xStart = xF - r/2;
yStart = yF - r/2;
kolo = new float[(int)r + 1][(int)r + 1];
for (int i = 0; i < 360; i++) {
xP = r/2 + (float)(r/2 * Math.cos(2 * Math.PI * (double)i/360));
yP = r/2 + (float)(r/2 * Math.sin(2 * Math.PI * (double)i/360));
kolo[(int)xP][(int)yP] = 1;
}
boolean start;
for (int i = 0; i < (int)r + 1; i++) {
start = false;
for (int j = 0; j < (int)r + 1; j++) {
if (kolo[i][j] == 1)
if (start == false) start = true;
else if (j >= r/2) break;
if (start == true) kolo[i][j] = 1;
}
}
// obraz is a bitmap with background
for (int i = 0; i < (int)r; i++) {
for (int j = 0; j < (int)r; j++) {
if(kolo[i][j] == 1 && (int)xStart + i >= 0 && (int)yStart + j >= 0 &&
(int)xStart + i < obraz.getWidth() && (int)yStart + j < obraz.getHeight())
obraz.setPixel((int)xStart + i, (int)yStart + j, 0);
}
}
}
}