Как получить градусы поворота из события мультитач с двумя пальцами?

У меня есть ImageView, который можно использовать для панорамирования одним пальцем или масштабирования двумя пальцами.Работает нормально.Я расширил его для обработки вращения, и его поведение вызывает некоторую путаницу.Когда происходит событие multi-touch, вызывается этот метод, который должен возвращать угол поворота в градусах.Это не то, что я ожидал.Когда я вращаю двумя пальцами, я ожидаю, что на выходе получится ...158 166 168 169 174 176 179 181 и т. Д.Но на самом деле я получаю примерно следующее:158 166-179 179-179 179-179Проблема вроде бы со знаками.Как этот метод узнает, 180 или -180, 90 или -270?Изображение часто вращается не в ту сторону, а затем внезапно подскакивает и начинает вращаться в противоположную сторону.Хуже того, направление его вращения изначально случайно.Я тестирую приложение на Nexus One, но также вижу ту же проблему на планшете Advent Vega.Оба устройства нормально работают с Google Maps в 3D, чтобы поворачивать экран (если иногда немного нервно), поэтому доказательства не указывают на аппаратные ограничения.Вторая проблема заключается в том, что когда два пальца выровнены примерно по вертикали или горизонтали, угол просто не меняется, поэтому вращение «застревает» примерно на 10-20 градусов вверх /вниз /влево /вправо.В настоящее время я проверяю, сильно ли изменился угол внезапно, и если да, то вычтите его из 360. Ужасно, черт возьми, но это немного помогает.Надеюсь, кто-то из вас видел это раньше и знает, как извлечь угловое вращение из жеста мультитач.Некоторые вещи в Android настолько просты, что кажутся удивительными, но такие вещи очень болезненны.
7 голосов | спросил Ollie C 15 J0000006Europe/Moscow 2011, 22:05:51

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132