Здесь нужна небольшая помощь: у меня сейчас нет идей ...
Вот что мне нужно сделать:
- Рендеринг "базового" изображения [оно созданоиз байтового массива ARGB.8888]
- пользователь нажимает 2 точки на экране;Мне нужно выполнить пиксельные манипуляции с областью пикселей вокруг пути, взятого из одной точки в другую ... [Мне нужно вычислить квадратный блок пикселей для каждого пикселя на всем пути].
- отображать модификацию изображения по мере продвижения кода в виде анимации.
Я могу отобразить весь путь;Я могу правильно рассчитать и манипулировать пикселями .. Но я не могу показать анимацию, когда мой код движется по пути ... в текущей реализации я могу отобразить весь рассчитанный путь в конце...
public void onDraw(Canvas canvas){
canvas.drawColor(Color.WHITE);
Paint p = new Paint();
canvas.drawBitmap(base,0,0,p);
traverse clickEvent1.x -> clickEvent2.x
traverse for clickEvent1.Y -> clickEvent2.Y
{
newBitMap = calculateNewBitMap(base)
// I nee to redraw Canvas with (newBitMap)
// canvas.drawBitMap(newBitMap);
//Doesn't work
//postInvalidate();
//invalidate()
//AnimationDrawable.addFrame(newBitMap)
// I am not calling start here
//but just wanted to let you know that I do call animation start to display the frames stored in it
// animation.start();
}
// obviously wouldn't work here As it is already out of the loop
//invalidate();
}
Пожалуйста, обратите внимание:
- Образ newBitMap генерируется во время выполнения, он не будет доступен мне заранее ...
- Iпопробовал invalidate () в цикле;но он получит кумулятивный результат только после прохождения всего цикла, а не промежуточных состояний newBitMaps.
- Производительность имеет решающее значение + Я имею дело с ОГРОМНЫМИ размерами изображений .. поэтому, пожалуйста, имейте это в видуа также ... если я создаю несколько растровых изображений для временного хранения сбоев JVM из-за "OutofMemory" ..
Я также попытался сохранить новые изображения в форме "AnimationDrawable";но это также не решает проблему ....
AnimationDrawable animDrawable = new AnimationDrawable();
Drawable frame1 = new BitmapDrawable(newCaclBitMap);
animDrawable.addFrame(frame1, 250);
Спасибо за любые указания / предложения ..