Плавное перемещение изображения с помощью акселерометра в Android

Я создаю приложение для Android, похожее на рентгеновский сканер ( Play Store Link), которое плавно перемещает изображения на экране, перемещая устройство влево, вправо вверх и вниз.

Я использую акселерометр для этого, но проблема в том, что изображение не движется плавно. Мой код ниже

int x1 = (int) sensorEvent.values[0]*(screenW/10);
int y1 = (int) sensorEvent.values[1]*(screenH/14);

а затем в розыгрышеcanvas.drawBitmap(bmp, x, y, mPaint);

1 ответ

Это не то, как вы их используете. Вы должны принять текущее значение и ДОБАВИТЬ в текущую позицию вместо того, чтобы устанавливать позицию из значения напрямую. Чем больше вы наклоняете - тем больше значений вы получите и, следовательно, тем быстрее будет двигаться изображение. Затем вы можете также применить некоторую линейную интерполяцию к движению, чтобы оно выглядело более плавным.

Вот ссылка, чтобы узнать больше о lerp (линейной интерполяции) в коде: http://en.wikipedia.org/wiki/Linear_interpolation

Другие вопросы по тегам