mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Fix gestures on vertical readers
This commit is contained in:
		| @@ -25,6 +25,7 @@ import eu.kanade.tachiyomi.R; | ||||
| import eu.kanade.tachiyomi.data.source.model.Page; | ||||
| import eu.kanade.tachiyomi.ui.base.fragment.BaseFragment; | ||||
| import eu.kanade.tachiyomi.ui.reader.ReaderActivity; | ||||
| import eu.kanade.tachiyomi.ui.reader.viewer.pager.vertical.VerticalReader; | ||||
| import rx.Observable; | ||||
| import rx.Subscription; | ||||
| import rx.android.schedulers.AndroidSchedulers; | ||||
| @@ -61,12 +62,13 @@ public class PagerReaderFragment extends BaseFragment { | ||||
|         } | ||||
|  | ||||
|         imageView.setParallelLoadingEnabled(true); | ||||
|         imageView.setMaxDimensions(activity.getMaxBitmapSize(), activity.getMaxBitmapSize()); | ||||
|         imageView.setMaxBitmapDimensions(activity.getMaxBitmapSize()); | ||||
|         imageView.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_FIXED); | ||||
|         imageView.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_INSIDE); | ||||
|         imageView.setMinimumScaleType(parentFragment.scaleType); | ||||
|         imageView.setRegionDecoderClass(parentFragment.getRegionDecoderClass()); | ||||
|         imageView.setBitmapDecoderClass(parentFragment.getBitmapDecoderClass()); | ||||
|         imageView.setVerticalScroll(parentFragment instanceof VerticalReader); | ||||
|         imageView.setOnTouchListener((v, motionEvent) -> parentFragment.onImageTouch(motionEvent)); | ||||
|         imageView.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() { | ||||
|             @Override | ||||
|   | ||||
| @@ -32,7 +32,7 @@ public class VerticalPager extends VerticalViewPagerImpl implements Pager { | ||||
|     } | ||||
|  | ||||
|     private void init(Context context) { | ||||
|         gestureDetector = new GestureDetector(context, new VerticalPagerGestureListener(this)); | ||||
|         gestureDetector = new GestureDetector(context, new PagerGestureListener(this)); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -119,20 +119,5 @@ public class VerticalPager extends VerticalViewPagerImpl implements Pager { | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     private static class VerticalPagerGestureListener extends PagerGestureListener { | ||||
|  | ||||
|         public VerticalPagerGestureListener(Pager pager) { | ||||
|             super(pager); | ||||
|         } | ||||
|  | ||||
|         @Override | ||||
|         public boolean onDown(MotionEvent e) { | ||||
|             // Vertical view pager ignores scrolling events sometimes. | ||||
|             // Returning true here fixes it, but we lose touch events on the image like | ||||
|             // double tap to zoom | ||||
|             return true; | ||||
|         } | ||||
|     } | ||||
|      | ||||
| } | ||||
|   | ||||
| @@ -10,6 +10,7 @@ import java.util.List; | ||||
|  | ||||
| import eu.kanade.tachiyomi.R; | ||||
| import eu.kanade.tachiyomi.data.source.model.Page; | ||||
| import eu.kanade.tachiyomi.ui.reader.ReaderActivity; | ||||
|  | ||||
| public class WebtoonAdapter extends RecyclerView.Adapter<WebtoonHolder> { | ||||
|  | ||||
| @@ -64,4 +65,8 @@ public class WebtoonAdapter extends RecyclerView.Adapter<WebtoonHolder> { | ||||
|         return fragment; | ||||
|     } | ||||
|  | ||||
|     public ReaderActivity getReaderActivity() { | ||||
|         return (ReaderActivity) fragment.getActivity(); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -14,7 +14,6 @@ import butterknife.Bind; | ||||
| import butterknife.ButterKnife; | ||||
| import eu.kanade.tachiyomi.R; | ||||
| import eu.kanade.tachiyomi.data.source.model.Page; | ||||
| import eu.kanade.tachiyomi.ui.reader.ReaderActivity; | ||||
|  | ||||
| public class WebtoonHolder extends RecyclerView.ViewHolder { | ||||
|  | ||||
| @@ -31,17 +30,16 @@ public class WebtoonHolder extends RecyclerView.ViewHolder { | ||||
|         this.adapter = adapter; | ||||
|         ButterKnife.bind(this, view); | ||||
|  | ||||
|         int maxDim = ((ReaderActivity)adapter.getReader().getActivity()).getMaxBitmapSize(); | ||||
|  | ||||
|         imageView.setParallelLoadingEnabled(true); | ||||
|         imageView.setMaxBitmapDimensions(adapter.getReaderActivity().getMaxBitmapSize()); | ||||
|         imageView.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_FIXED); | ||||
|         imageView.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_INSIDE); | ||||
|         imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_FIT_WIDTH); | ||||
|         imageView.setMaxScale(10); | ||||
|         imageView.setRegionDecoderClass(adapter.getReader().getRegionDecoderClass()); | ||||
|         imageView.setBitmapDecoderClass(adapter.getReader().getBitmapDecoderClass()); | ||||
|         imageView.setVerticalScroll(true); | ||||
|         imageView.setOnTouchListener(touchListener); | ||||
|         imageView.setMaxDimensions(maxDim, maxDim); | ||||
|         imageView.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() { | ||||
|             @Override | ||||
|             public void onImageLoaded() { | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.ui.reader.viewer.webtoon; | ||||
|  | ||||
| import android.os.Bundle; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.support.v7.widget.RecyclerView; | ||||
| import android.view.GestureDetector; | ||||
| import android.view.LayoutInflater; | ||||
| @@ -30,7 +29,6 @@ public class WebtoonReader extends BaseReader { | ||||
|     private Subscription decoderSubscription; | ||||
|     private GestureDetector gestureDetector; | ||||
|  | ||||
|     @Nullable | ||||
|     @Override | ||||
|     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) { | ||||
|         adapter = new WebtoonAdapter(this); | ||||
| @@ -56,14 +54,6 @@ public class WebtoonReader extends BaseReader { | ||||
|                 getReaderActivity().onCenterSingleTap(); | ||||
|                 return true; | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             public boolean onDown(MotionEvent e) { | ||||
|                 // The only way I've found to allow panning. Double tap event (zoom) is lost | ||||
|                 // but panning should be the most used one | ||||
|                 return true; | ||||
|             } | ||||
|  | ||||
|         }); | ||||
|  | ||||
|         setPages(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user