package ar.rulosoft.mimanganu.componentes.readers.paged; import android.content.Context; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.MotionEvent; import ar.rulosoft.mimanganu.R; import ar.rulosoft.mimanganu.componentes.OnSwipeOutListener; import ar.rulosoft.mimanganu.componentes.UnScrolledViewPagerVertical; /** * Created by Raul on 27/06/2016. */ public class VerticalPagedReader extends PagedReader implements OnSwipeOutListener { public UnScrolledViewPagerVertical mViewPager; public VerticalPagedReader(Context context) { super(context); init(); } @Override public void seekPage(int aPage) { goToPage(aPage); } @Override public boolean isLastPageVisible() { return paths != null && !paths.isEmpty() && mViewPager.getCurrentItem() == (paths.size() - 1); } @Override public void goToPage(int aPage) { int page = aPage - 1; mViewPager.setCurrentItem(page); if (readerListener != null) { readerListener.onPageChanged(transformPage(page)); } currentPage = page; } @Override public int getCurrentPage() { return mViewPager.getCurrentItem() + 1; } public void init() { String infService = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater li = (LayoutInflater) getContext().getSystemService(infService); li.inflate(R.layout.view_paged_reader_vertical, this, true); mViewPager = (UnScrolledViewPagerVertical) findViewById(R.id.pager); addOnPageChangeListener(); mViewPager.setOnSwipeOutListener(this); } protected void addOnPageChangeListener() { mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (readerListener != null) { readerListener.onPageChanged(transformPage(position)); } currentPage = position; if(mPageAdapter != null) mPageAdapter.setCurrentPage(position); } @Override public void onPageSelected(int position) { currentPage = position; } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public void setPagerAdapter(PageAdapter nPageAdapter) { mPageAdapter = nPageAdapter; mViewPager.setAdapter(mPageAdapter); } public boolean onSingleTapConfirmed(MotionEvent e) { if (readerListener != null) if (e.getX() < getWidth() / 4) { if (currentPage == 0) { if (readerListener != null) { readerListener.onStartOver(); } } else { mViewPager.setCurrentItem(currentPage - 1); } } else if (e.getX() > getWidth() / 4 * 3) { if (currentPage == paths.size() - 1) { if (readerListener != null) { readerListener.onEndOver(); } } else { mViewPager.setCurrentItem(currentPage + 1); } } else { readerListener.onMenuRequired(); } return false; } @Override protected int transformPage(int page) { return page + 1; } @Override public void onStartOver() { if (readerListener != null) { readerListener.onStartOver(); } } @Override public void onEndOver() { if (readerListener != null) { readerListener.onEndOver(); } } }