Внедрение на андроидном холсте

У меня есть обычный детектор жестов для обнаружения fling, это атрибут экземпляра SurfaceView

 GestureDetector flingDetector = new GestureDetector(getContext(),new SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // Fling implementation return true; } }); 

Я рисую много сложного материала на canvas и у меня есть метод translate(dx,dy) который я использую с onScroll .

Итак, мой вопрос заключается в том, как реализовать fling с помощью метода translate ?

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

Я не уверен, что это ответит на ваш вопрос, я попробую.

Проверьте http://developer.android.com/reference/android/view/MotionEvent.html для MotionEvent.

Вы можете использовать два события, полученные как e1 и e2, по методу onFling, и вычислять разности координат с e1.getX (), e2.getX (), e1.getY (), e2.getY () …. С помощью этого Вы бы использовали dx и dy для перевода (dx, dy).

Поскольку бросок кажется скорее динамическим жестом, вы можете решить, что fling означает усилительное движение и применяет коэффициент усиления к dx и dy, так что, когда пользователь прокручивает, они получают точное движение, но при бросании фактическое движение Усиливается.

Если этот коэффициент зависит от скорости, у вас есть настраиваемый ответ для каждого пользовательского ввода.

(Другое дело – оживить результат, который, я думаю, будет зависеть от других вещей).

Пример, который я мог бы попробовать, если бы это был я:

  • Пользователь прокручивается мягко: Движение равно dx, dy. Перевести (Dx, Dy).
  • Пользователь:
    Реальное движение: dx = (e2.getX () – e1.getX (). Dy = (e2.getY () – e1.getY (). Флип-фактор: (выборочная реализация). Модифицированное движение: dxModified = dx * velocityX * F. dyModified = dy * speedY * F. Наконец: translate (dxModified, dyModified)

    Надеюсь, это поможет в некоторой степени.

    Редактировать: я не понял, что этот вопрос был с 2012 года, надеюсь, это поможет кому-то в свое время. В любом случае было бы неплохо узнать об окончательной реализации !.