Математа снова пришла ко мне и победила меня.Мне нужна ваша помощь, чтобы перегруппироваться и снова атаковать.
Что у меня есть:
У меня есть вид с поверхности икруг как растровое изображение.Мне нужно повернуть растровое изображение, когда пользователь перемещает палец по краю круга.Чем быстрее пользователь скользит, тем больше мне нужно вращать изображение.Кажется простым, но не очень простым в реализации.
Что мне нужно
Мне нужно вычислить угол, на который нужно повернуть изображение в событии onDraw.Из того, что я до сих пор думал, мне нужны две вещи: - угол между новой точкой касания и старой.Я сделал простую функцию, которая позаботится об этом:
private int getAngleBetweenTwoTouchedPoints(double oldX, double oldY, double newX, double newY)
{
return (int) Math.abs(Math.atan2(newY - oldY, newX - oldX));
}
угол, возвращаемый этим, варьируется от 0 до 1, и я считаю, что это правильно.Увеличивая угол поворота изображения на это значение, я получаю медленное вращение, в основном на 1 единицу.Так что есть шанс поработать, но пока не нормально.Итак, второе, что мне может понадобиться, это скорость, с которой пользователь проводит пальцем по экрану.В общем, что-то вроде этого:
вращение + угол = угол наклона + скорость
Скорость или скорость, как я ее назвал, является проблемой в моем случае, учитывая, что я не двигаюсь только по Xили Y, но по кругу.Я понятия не имею, как рассчитать это.Я видел VelocityTracker на Android справке, но я не знаю, как это могло бы помочь.
Итак, подведем итоги: мне нужно иметь возможность поворачивать изображение, когда пользователь перемещает палец вокруг границы изображения.Еще проще, когда пользователь прекращает скольжение, пиксель изображения, который был ниже пальца при запуске слайда, должен быть таким же, когда слайд останавливается.
Любая помощь с благодарностью.Спасибо