2013-04-29 2 views
0

У меня есть пользовательский вид с ScaleGestureDetector, на котором я хочу использовать щепотку для масштабирования. Он работает нормально, когда вид довольно большой, но когда он мал, только zomm работает правильно (я помещаю два пальца в вид и перемещаю их в разные стороны), когда я пытаюсь уменьшить масштаб (поместите два пальца в вид и перемещать вместе) ничего не происходит. Вот скриншот: enter image description hereУменьшить масштаб на небольшом изображении с помощью ScaleGestureDetector

Проблема возникает в небольших видах, которые находятся в центре. В верхнем и нижнем увеличенных размерах zomm in и уменьшают работу.

код:

private class MyScaleGestureListener implements OnScaleGestureListener 
{ 
    public boolean onScale(ScaleGestureDetector detector) 
    { 
     scaleFactor *= detector.getScaleFactor(); 
     if (scaleFactor < 1) 
      scaleFactor = 1; 

     int newScrollX = (int)((getScrollX() + detector.getFocusX()) * detector.getScaleFactor() - detector.getFocusX()); 
     int newScrollY = (int)((getScrollY() + detector.getFocusY()) * detector.getScaleFactor() - detector.getFocusY()); 
     scrollTo(newScrollX, newScrollY); 

     invalidate(); 

     return true; 
    } 

    public boolean onScaleBegin(ScaleGestureDetector detector) 
    { 
     return true; 
    } 

    public void onScaleEnd(ScaleGestureDetector detector) 
    { 
    } 
} 

Как сделать уменьшение масштаба работу на небольших просмотрах?

ответ

0

Механизм распознавания неряшливых жестов в андроиде. Чтобы иметь возможность уменьшать масштаб на небольшом представлении, вы должны создать собственный ScaleGestureDetector со всем кодом, ответственным за удаленные жесты. Вы можете взять оригинальный код отсюда https://code.google.com/p/android-vnc-viewer/source/browse/branches/antlersoft/androidVNC/src/com/antlersoft/android/bc/ScaleGestureDetector.java?r=164.

Смежные вопросы