Decouple viewer from the reader activity
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package eu.kanade.mangafeed.ui.viewer;
|
||||
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import eu.kanade.mangafeed.ui.activity.ReaderActivity;
|
||||
import eu.kanade.mangafeed.ui.viewer.base.ViewPagerViewer;
|
||||
|
||||
public class LeftToRightViewer extends ViewPagerViewer {
|
||||
|
||||
public LeftToRightViewer(ReaderActivity activity, FrameLayout container) {
|
||||
super(activity, container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFirstPageOut() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLastPageOut() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package eu.kanade.mangafeed.ui.viewer;
|
||||
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import eu.kanade.mangafeed.data.models.Page;
|
||||
import eu.kanade.mangafeed.ui.activity.ReaderActivity;
|
||||
import eu.kanade.mangafeed.ui.viewer.base.ViewPagerViewer;
|
||||
|
||||
public class RightToLeftViewer extends ViewPagerViewer {
|
||||
|
||||
public RightToLeftViewer(ReaderActivity activity, FrameLayout container) {
|
||||
super(activity, container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageListReady(List<Page> pages) {
|
||||
ArrayList<Page> inversedPages = new ArrayList<>(pages);
|
||||
Collections.reverse(inversedPages);
|
||||
adapter.setPages(inversedPages);
|
||||
viewPager.setCurrentItem(adapter.getCount()-1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCurrentPageFromPos(int position) {
|
||||
return getTotalPages() - position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPosFromPage(Page page) {
|
||||
return getTotalPages() - (page.getPageNumber() + 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFirstPageOut() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLastPageOut() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package eu.kanade.mangafeed.ui.viewer.base;
|
||||
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import eu.kanade.mangafeed.data.models.Page;
|
||||
import eu.kanade.mangafeed.ui.activity.ReaderActivity;
|
||||
|
||||
public abstract class BaseViewer {
|
||||
|
||||
protected ReaderActivity activity;
|
||||
protected FrameLayout container;
|
||||
protected int currentPosition;
|
||||
|
||||
public BaseViewer(ReaderActivity activity, FrameLayout container) {
|
||||
this.activity = activity;
|
||||
this.container = container;
|
||||
}
|
||||
|
||||
public void updatePageNumber() {
|
||||
activity.onPageChanged(getCurrentPageFromPos(currentPosition), getTotalPages());
|
||||
}
|
||||
|
||||
public int getCurrentPageFromPos(int position) {
|
||||
return position + 1;
|
||||
}
|
||||
|
||||
public int getPosFromPage(Page page) {
|
||||
return page.getPageNumber();
|
||||
}
|
||||
|
||||
public abstract int getTotalPages();
|
||||
public abstract void onImageReady(Page page);
|
||||
public abstract void onPageListReady(List<Page> pages);
|
||||
public abstract boolean onImageTouch(MotionEvent motionEvent);
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package eu.kanade.mangafeed.ui.viewer.base;
|
||||
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.models.Page;
|
||||
import eu.kanade.mangafeed.ui.activity.ReaderActivity;
|
||||
import eu.kanade.mangafeed.ui.adapter.ReaderPageAdapter;
|
||||
import eu.kanade.mangafeed.widget.ReaderViewPager;
|
||||
|
||||
public abstract class ViewPagerViewer extends BaseViewer {
|
||||
|
||||
protected ReaderViewPager viewPager;
|
||||
protected ReaderPageAdapter adapter;
|
||||
|
||||
public ViewPagerViewer(ReaderActivity activity, FrameLayout container) {
|
||||
super(activity, container);
|
||||
activity.getLayoutInflater().inflate(R.layout.viewer_viewpager, container);
|
||||
|
||||
adapter = new ReaderPageAdapter(activity.getSupportFragmentManager());
|
||||
viewPager = (ReaderViewPager) activity.findViewById(R.id.view_pager);
|
||||
viewPager.setAdapter(adapter);
|
||||
viewPager.setOffscreenPageLimit(3);
|
||||
viewPager.addOnPageChangeListener(new ReaderViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
currentPosition = position;
|
||||
updatePageNumber();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
});
|
||||
viewPager.setOnChapterBoundariesOutListener(new ReaderViewPager.OnChapterBoundariesOutListener() {
|
||||
@Override
|
||||
public void onFirstPageOutEvent() {
|
||||
onFirstPageOut();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLastPageOutEvent() {
|
||||
onLastPageOut();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTotalPages() {
|
||||
return adapter.getCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageListReady(List<Page> pages) {
|
||||
adapter.setPages(pages);
|
||||
updatePageNumber();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onImageReady(Page page) {
|
||||
adapter.replacePage(getPosFromPage(page), page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onImageTouch(MotionEvent motionEvent) {
|
||||
return viewPager.onImageTouch(motionEvent);
|
||||
}
|
||||
|
||||
public abstract void onFirstPageOut();
|
||||
public abstract void onLastPageOut();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user