#android #canvas #bitmap #surfaceview
#Android #canvas #растровое изображение #surfaceview
Вопрос:
У меня есть массив байт RGB565, который я отображаю на своем Canvas следующим образом:
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
ByteBuffer buf = ByteBuffer.wrap(data); // data is my array
bmp.copyPixelsFromBuffer(buf);
// then I display the bitmap on my SurfaceView
Я вижу, что эта процедура довольно медленная на моем телефоне. Могу ли я сделать быстрее, мне просто нужно отобразить этот массив байтов RGB565 на моем canvas. На моем телефоне нет графического ускорителя, поэтому OpenGL, вероятно, не поможет..
Комментарии:
1. Почему проблема с производительностью? Вы делаете это много раз?
Ответ №1:
Это не подробный ответ, но если вам нужна серьезная производительность с растровыми изображениями, я бы подумал о том, чтобы сделать это в NDK. Я немного поработал с этим, и это довольно неплохо.
http://developer.android.com/sdk/ndk/overview.html
Посмотрите на пример plasma. Мы в основном начали с этого и создали наше решение.
Помимо этого, я бы предложил не создавать новое растровое изображение при каждом запуске.
Комментарии:
1. Спасибо! Действительно, я создавал новое растровое изображение при каждом запуске. Как только я начал использовать одно растровое изображение, производительность очень сильно возросла. Мне еще предстоит изучить предложенное вами решение plasma
2. С подходом из образца plasma это еще быстрее, спасибо