2013-05-03 2 views
2

Я изучаю библиотеку Mupdf на Android. Я скомпилировал и успешно выполнил Образец. Это действительно отличная библиотека. Но теперь у меня проблема с масштабированием страницы при запуске события «Двойной кран».Как реализовать двойное масштабирование в Mupdf?

Во-первых, я осуществил мой взгляд, чтобы 'слушать' двойное событие водопроводную:

public class MuPDFReaderView extends ReaderView implements GestureDetector.OnDoubleTapListener 

Затем я отменяют onDoubleTap() метод:

@Override 
public boolean onDoubleTap(MotionEvent e) { 
    // TODO Auto-generated method stub 
    MuPDFView pageView = (MuPDFView) getDisplayedView(); 
    pageView.setScale(1.5f); 
    Log.e("double tap", "" + e.getDownTime()); 
    return false; 
} 

Когда двойное нажатие на странице, я могу видеть " дважды нажмите «войти в Logcat, но страница не увеличена. Что я здесь не так?

+0

Здравствуйте, вы поняли, как это сделать? – Bruno

ответ

1

Я не знаю, почему ваша попытка не работала, но вот еще один способ сделать это:

Вместо реализации GestureDetector.OnDoubleTapListener на ваш взгляд, реализовать его прямо на ReaderView вы расширенный

public class ReaderView extends AdapterView<Adapter> implements 
    GestureDetector.OnGestureListener, 
    GestureDetector.OnDoubleTapListener, 
    ScaleGestureDetector.OnScaleGestureListener, 
    Runnable { ... } 

, а затем переопределить OnDoubleTap метод как этот

@Override 
public boolean onDoubleTap(MotionEvent e) { 

    float previousScale = mScale; 
    mScale += (mScale == 1f) ? 2f : -2f; 
    float factor = mScale/previousScale; 

    View v = mChildViews.get(mCurrent); 
    if (v != null) { 
     // Work out the focus point relative to the view top left 
     int viewFocusX = (int)e.getX() - (v.getLeft() + mXScroll); 
     int viewFocusY = (int)e.getY() - (v.getTop() + mYScroll); 
     // Scroll to maintain the focus point 
     mXScroll += viewFocusX - viewFocusX * factor; 
     mYScroll += viewFocusY - viewFocusY * factor; 
     requestLayout(); 
    } 

    return true; 
} 

Кроме того, вы должны переопределить эти 2 OT ее методы

@Override 
public boolean onDoubleTapEvent(MotionEvent e) { 
    return false; 
} 

@Override 
public boolean onSingleTapConfirmed(MotionEvent e) { 
    return false; 
} 

Получили этот код из примера Librelio Android

https://github.com/libreliodev/android

+0

Я добавил выше методы в класс ReaderView, но его не работает. Двойной клик? когда я добавляю код выше, он говорит: «Метод onDoubleTap (MotionEvent) типа ReaderView должен переопределять или реализовывать метод супертипа« Должен ли я добавить метод выше в другое место? – asliyanage

0

Вы должны справиться с этим с помощью ReaderView. Измените масштаб и инициируйте макет запроса.

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