Если все, что вам нужно сделать, это визуализировать одно сложное изображение в другом потоке, чтобы пользовательский интерфейс оставался отзывчивым, то после того, как он завершит рендеринг, фактически нарисуйте его, вы можете рассмотреть возможность сделать это в стандартном keep-work-off-the- UI-поток, используя что-то вроде AsyncTask
. Это не то, что вы делаете композитинг или что-то, что действительно специфично для GPU (если, как другие не предложили, вы можете перенести фактические расчеты рендеринга в GPU).
Я бы по крайней мере поэкспериментировал с простым построением массива, представляющего ваши пиксели в AsyncTask
, а затем, когда вы закончите, создайте растровое изображение с его помощью, используя setPixels
и установите источник ImageView
к этому растровому изображению.
Если, с другой стороны, вы хотите, чтобы ваше изображение отображалось попиксельно, то, возможно, SurfaceView
может быть разумным выбором, и в этом случае это будет в основном анимация, чтобы вы могли следовать другим учебникам. Есть и другие настройки, но главное - переопределить onDraw
, и тогда вам, вероятно, придется использовать Canvas.drawPoint
для рисования каждого пикселя.