Как (очень) быстро обновить изображение

#android

#Android

Вопрос:

У меня есть ImageView в моем приложении для Android, которое я хочу периодически менять с переменной частотой кадров. Единственный способ, которым мне удалось это сделать, — использовать функцию postDelayed обработчика внутри функции run(). Теоретически это сработало бы, но на самом деле максимальная частота кадров, которую я мог получить, составляла около 4-5 кадров в секунду. Мне нужна более высокая частота кадров (от 40 до 60 кадров в секунду).

Может кто-нибудь, пожалуйста, предложить решение для обновления изображения быстрее, чем это (даже если это не ImageView)?

Ответ №1:

Я думаю, вам нужно что-то вроде игрового цикла. Это можно сделать с помощью SurfaceView. Ознакомьтесь с этим руководством http://obviam.net/index.php/a-very-basic-the-game-loop-for-android /

Комментарии:

1. Да, я это помню. Спасибо за информацию, похоже, это правильный выбор, хотя даже таким образом быстрое отображение bmp с высоким разрешением может оказаться невозможным.

2. Ну, вы можете выполнять такие оптимизации, как уменьшение масштаба, разделение растрового изображения, обрезка. Также вы можете использовать OpenGL.

3. Предполагается, что изображение, которое я пытаюсь обновить, должно быть изображением с высоким разрешением, занимающим весь экран. Я попытался изменить его с помощью canvas, как было предложено, но я также получаю довольно низкую частоту кадров (которая также зависит от платформы). Я собираюсь попробовать Cocos2DX (который может уделять больше внимания графическому процессору), но если это не сработает, то, я думаю, нет никакого способа получить высокую частоту кадров при смене изображений с высоким разрешением (за исключением создания фильма).