Android графика - PullRequest
       11

Android графика

0 голосов
/ 26 января 2012

У меня есть компас, который является подклассом класса представления, и моя стрелка компаса является растровым изображением. Каждый раз, когда датчик меняет компас, он становится недействительным и перерисовывается на холсте, вращение стрелки компаса также изменяется. У меня проблема в том, что когда вы видите, как вращается стрелка компаса, она немного отстает, в основном это плохие кадры в секунду. Я предполагаю, что это запаздывает, потому что я постоянно перерисовываю растровое изображение вместо того, чтобы рисовать, и задаюсь вопросом, исчезнут ли плохие кадры в секунду, если вместо рисования на холсте я использовал вид поверхности Будем весьма благодарны за любые советы о том, как решить эту проблему наилучшим образом. Изображение 300x300 пикселей.

Датчик в основной деятельности:

@Override
public void onSensorChanged(SensorEvent event) {
    float[] v = event.values;
    north = v[0];
    comp.setNorth(-v[0]);
}

Вид компаса:

public void setNorth(float n) {
    north_changed = true;
    north = n;
    invalidate();
}

Рисунок растрового изображения:

private void drawCompass(Canvas canvas) {
    canvas.save();
    if (north_changed == true) {
        canvas.rotate(north);
    }
    float maxwidth = (float) (canvasBitmap.getWidth() * Math.sqrt(2));
    float maxheight = (float) (canvasBitmap.getHeight() * Math.sqrt(2));
    float ratio = Math.min(w / maxwidth, h / maxheight);
    int width = (int) (canvasBitmap.getWidth() * ratio);
    int height = (int) (canvasBitmap.getHeight() * ratio);

    canvas.drawBitmap(compTexture, new Rect(0, 0, compTexture.getWidth(),
            compTexture.getHeight()), new Rect(-width / 2, -height / 2,
            width / 2, height / 2), facePaint);
    canvas.restore();

}

1 Ответ

0 голосов
/ 26 января 2012

Использование SurfaceView гораздо лучше подходит для этой задачи, оно может отображать намного больше кадров в секунду, вы также можете использовать GLSurfaceView, чтобы убедиться, что все отображается на GPU.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...