Recover page position when configuration changes

This commit is contained in:
inorichi
2015-10-28 21:29:28 +01:00
parent cd456d2186
commit 5e01937cce
7 changed files with 38 additions and 22 deletions
@@ -25,13 +25,8 @@ public class RightToLeftViewer extends ViewPagerViewer {
}
@Override
public int getCurrentPageFromPos(int position) {
return getTotalPages() - position;
}
@Override
public int getPosFromPage(Page page) {
return getTotalPages() - (page.getPageNumber() + 1);
public int getCurrentPageIndex(int viewerPosition) {
return getTotalPages() - viewerPosition - 1;
}
@Override
@@ -52,6 +52,12 @@ public class VerticalViewer extends BaseViewer {
return adapter.getCount();
}
@Override
public void setSelectedPage(int pageNumber) {
// TODO
return;
}
@Override
public void onPageListReady(List<Page> pages) {
adapter.setPages(pages);
@@ -33,6 +33,12 @@ public class WebtoonViewer extends BaseViewer {
return adapter.getItemCount();
}
@Override
public void setSelectedPage(int pageNumber) {
// TODO
return;
}
@Override
public void onPageListReady(List<Page> pages) {
adapter.setPages(pages);
@@ -20,18 +20,17 @@ public abstract class BaseViewer {
}
public void updatePageNumber() {
activity.onPageChanged(getCurrentPageFromPos(currentPosition), getTotalPages());
activity.onPageChanged(getCurrentPageIndex(currentPosition), getTotalPages());
}
public int getCurrentPageFromPos(int position) {
return position + 1;
}
public int getPosFromPage(Page page) {
return page.getPageNumber();
// Returns the page index given a position in the viewer. Useful por a right to left viewer,
// where the current page is the inverse of the position
public int getCurrentPageIndex(int viewerPosition) {
return viewerPosition;
}
public abstract int getTotalPages();
public abstract void setSelectedPage(int pageNumber);
public abstract void onPageListReady(List<Page> pages);
public abstract boolean onImageTouch(MotionEvent motionEvent);
}
@@ -65,6 +65,11 @@ public abstract class ViewPagerViewer extends BaseViewer {
return adapter.getCount();
}
@Override
public void setSelectedPage(int pageNumber) {
viewPager.setCurrentItem(getCurrentPageIndex(pageNumber));
}
@Override
public void onPageListReady(List<Page> pages) {
adapter.setPages(pages);