Как уже указывали люди, если метод CalculateMyPixel () стоит дорого, то вызов 150 000 (HVGA) или 384,00 раз (WVGA) просто убьет вас.
Кроме того, попытка нарисовать ваш интерфейс в виде отдельных пикселей с помощью canvas.drawPoint () каждый раз, когда происходит обновление, является едва ли не наименее эффективным способом сделать это.
Если вы рисуете отдельные пиксели, вы почти наверняка захотите иметь какое-то закадровое растровое изображение, содержащее пиксели, которые вы рисуете с помощью простого Canvas.drawBitmap ().
Тогда вы можете выбрать лучший способ управления этим растровым изображением. Это самое простое - просто сделать объект Bitmap нужного размера и использовать там API для его заполнения.
В качестве альтернативы, существует версия drawBitmap (), которая принимает необработанный целочисленный массив, так что вы можете заполнить его непосредственно любыми желаемыми значениями, избегая вызова метода для каждого пикселя.
Теперь вы можете переместить вычисление пикселей из метода onDraw (), который должен быть быстрым, чтобы иметь отзывчивый пользовательский интерфейс, и заполнить ваши пиксели где-нибудь еще. Может быть, вы рассчитываете их один раз во время инициализации. Возможно, вы их вычисляете и делаете выборочные обновления только тех частей, которые были изменены перед вызовом invalidate () (например, изменились пиксели из (0,0) - (10, l0), поэтому возьмите текущий битовый массив и просто измените эту область ). Если вычисление пикселей на самом деле просто медленное, вам, вероятно, потребуется создать отдельный поток для выполнения этой работы (обновление растрового изображения новыми пикселями, а затем postInvalidate () в пользовательском интерфейсе для их отрисовки).
Кроме того, теперь, когда у вас есть пиксели в растровом изображении, вы можете выполнять такие приемы, как уменьшение размера растрового изображения и масштабирование его при рисовании на экране, что позволяет значительно сократить время обновления этих пикселей при одновременном заполнении всего Пользовательский интерфейс (хотя и в более низком разрешении).