mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Now tap on edges of webtoon reader scrolls by 3/4 screen
This commit is contained in:
		| @@ -68,7 +68,7 @@ public class PagerReaderFragment extends BaseFragment { | ||||
|         imageView.setMinimumScaleType(parentFragment.scaleType); | ||||
|         imageView.setRegionDecoderClass(parentFragment.getRegionDecoderClass()); | ||||
|         imageView.setBitmapDecoderClass(parentFragment.getBitmapDecoderClass()); | ||||
|         imageView.setVerticalScroll(parentFragment instanceof VerticalReader); | ||||
|         imageView.setVerticalScrollingParent(parentFragment instanceof VerticalReader); | ||||
|         imageView.setOnTouchListener((v, motionEvent) -> parentFragment.onImageTouch(motionEvent)); | ||||
|         imageView.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() { | ||||
|             @Override | ||||
| @@ -187,8 +187,8 @@ public class PagerReaderFragment extends BaseFragment { | ||||
|  | ||||
|         final AtomicInteger currentValue = new AtomicInteger(-1); | ||||
|  | ||||
|         progressSubscription = Observable.interval(75, TimeUnit.MILLISECONDS, Schedulers.newThread()) | ||||
|                 .onBackpressureDrop() | ||||
|         progressSubscription = Observable.interval(100, TimeUnit.MILLISECONDS, Schedulers.newThread()) | ||||
|                 .onBackpressureLatest() | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .subscribe(tick -> { | ||||
|                     // Refresh UI only if progress change | ||||
|   | ||||
| @@ -38,7 +38,7 @@ public class WebtoonHolder extends RecyclerView.ViewHolder { | ||||
|         imageView.setMaxScale(10); | ||||
|         imageView.setRegionDecoderClass(adapter.getReader().getRegionDecoderClass()); | ||||
|         imageView.setBitmapDecoderClass(adapter.getReader().getBitmapDecoderClass()); | ||||
|         imageView.setVerticalScroll(true); | ||||
|         imageView.setVerticalScrollingParent(true); | ||||
|         imageView.setOnTouchListener(touchListener); | ||||
|         imageView.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() { | ||||
|             @Override | ||||
|   | ||||
| @@ -29,11 +29,20 @@ public class WebtoonReader extends BaseReader { | ||||
|     private Subscription decoderSubscription; | ||||
|     private GestureDetector gestureDetector; | ||||
|  | ||||
|     private int scrollDistance; | ||||
|  | ||||
|     private static final float LEFT_REGION = 0.33f; | ||||
|     private static final float RIGHT_REGION = 0.66f; | ||||
|  | ||||
|     @Override | ||||
|     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) { | ||||
|         adapter = new WebtoonAdapter(this); | ||||
|  | ||||
|         int screenHeight = getResources().getDisplayMetrics().heightPixels; | ||||
|         scrollDistance = screenHeight * 3 / 4; | ||||
|  | ||||
|         layoutManager = new PreCachingLayoutManager(getActivity()); | ||||
|         layoutManager.setExtraLayoutSpace(getResources().getDisplayMetrics().heightPixels / 2); | ||||
|         layoutManager.setExtraLayoutSpace(screenHeight / 2); | ||||
|  | ||||
|         recycler = new RecyclerView(getActivity()); | ||||
|         recycler.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); | ||||
| @@ -48,10 +57,18 @@ public class WebtoonReader extends BaseReader { | ||||
|                 .distinctUntilChanged() | ||||
|                 .subscribe(v -> recycler.setAdapter(adapter)); | ||||
|  | ||||
|         gestureDetector = new GestureDetector(getActivity(), new SimpleOnGestureListener() { | ||||
|         gestureDetector = new GestureDetector(recycler.getContext(), new SimpleOnGestureListener() { | ||||
|             @Override | ||||
|             public boolean onSingleTapConfirmed(MotionEvent e) { | ||||
|                 getReaderActivity().onCenterSingleTap(); | ||||
|                 final float positionX = e.getX(); | ||||
|  | ||||
|                 if (positionX < recycler.getWidth() * LEFT_REGION) { | ||||
|                     recycler.smoothScrollBy(0, -scrollDistance); | ||||
|                 } else if (positionX > recycler.getWidth() * RIGHT_REGION) { | ||||
|                     recycler.smoothScrollBy(0, scrollDistance); | ||||
|                 } else { | ||||
|                     getReaderActivity().onCenterSingleTap(); | ||||
|                 } | ||||
|                 return true; | ||||
|             } | ||||
|         }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user