Рисуйте анимацию с высоким разрешением и высокой частотой кадров на Android

I ' У меня есть более 30 отдельных растровых изображений (320x240 пикселей), которые я хотел бы отображать одно за другим в полноэкранном режиме на устройствах Android, что привело бы к анимации. В настоящее время я реализовал анимацию с использованием ImageView и таймера, который устанавливает следующий кадр, а затем отправляет сообщение, которое применяет следующий кадр. В результате частота кадров очень низкая: <2 кадра в секунду.

Таймер:

animationTimer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        Drawable frame = getNextFrame();
            if (frame != null) {
                Message message = animationFrameHandler.obtainMessage(1, frame);
                animationFrameHandler.sendMessage(message);
            }
        }
    }, 0, (int) (1000.0d / fps));

Обработчик:

final Handler animationFrameHandler = new Handler() {
    @Override
    public void handleMessage(Message message) {
        setImageDrawable((Drawable) message.obj);
    }
};

Поскольку я хочу достичь частоты кадров до 30 кадров в секунду, я должен использовать другой механизм и слышал о Canvas.drawBitmapMesh () и OpenGL .

Если возможно, я бы не хотел использовать OpenGL.

Спасибо, что поделились своим опытом!

6
задан Lars Blumberg 20 June 2014 в 07:31
поделиться