This article illustrates how to prevent the page navigation (horizontal scroll) while the page is zoomed with the rendering mode set as single/double page.
Here you can find a class that extends PDFLayoutDual class:
/**
* Block page navigation while zoomed.
*
* @author Nermeen created on 12/05/2017.
*/
public class ExtendedDualLayout extends PDFLayoutDual {
private boolean mZooming;
private Context mContext;
public ExtendedDualLayout(Context context) {
super(context);
mContext = context;
}
@Override
public void vZoomStart() {
mZooming = true;
super.vZoomStart();
}
@Override
public boolean vZoomEnd() {
boolean result = super.vZoomEnd();
if(result)
mZooming = false;
return result;
}
@Override
protected void do_scroll(int x, int y, int dx, int dy) {
if(vGetScale() > vGetMinScale()) {
int index = m_pageno;
if ((Global.def_view == 6 || Global.def_view == 4) && m_w > m_h)
index = (m_pageno + 1) / 2;
if (index > -1 && index < m_cells.length) {
int minX = m_cells[index].left;
int endX = m_cells[index].right - m_w;
boolean showToast = false;
if (x + dx > endX) { dx = endX - x; showToast = true;}
if (x + dx < minX) { dx = minX - x; showToast = true;}
if(showToast)
Toast.makeText(mContext, "You cannot change page while page is zoomed, Zoom out first!", Toast.LENGTH_SHORT).show();
}
}
super.do_scroll(x, y, dx, dy);
}
@Override
public void vSetX(int x) {
if(vGetScale() > vGetMinScale() && !mZooming) {
int index = m_pageno;
if ((Global.def_view == 6 || Global.def_view == 4) && m_w > m_h)
index = (m_pageno + 1) / 2;
if (x + vGetWidth() > m_cells[index].right)
x = m_cells[index].right - vGetWidth();
if (x <= m_cells[index].left)
x = m_cells[index].left;
}
super.vSetX(x);
}
}
RadaeePDF SDK for Android
Limit horizontal page change when a page is zoomed
How to avoid page change during navigation if page is zoomed? (Deprecated)
Created : 2017-05-12 09:39:08, Last Modified : 2017-05-12 09:41:02