package com.quran.labs.androidquran.widgets; import android.content.Context; import android.support.annotation.NonNull; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import com.quran.labs.androidquran.ui.helpers.AyahSelectedListener; import com.quran.labs.androidquran.ui.util.PageController; import com.quran.labs.androidquran.util.QuranSettings; public class QuranImagePageLayout extends QuranPageLayout { private HighlightingImageView imageView; public QuranImagePageLayout(Context context) { super(context); } @Override protected View generateContentView(Context context, boolean isLandscape) { imageView = new HighlightingImageView(context); imageView.setAdjustViewBounds(true); imageView.setIsScrollable(isLandscape && shouldWrapWithScrollView()); return imageView; } @Override public void updateView(@NonNull QuranSettings quranSettings) { super.updateView(quranSettings); imageView.setNightMode(quranSettings.isNightMode(), quranSettings.getNightModeTextBrightness()); } public HighlightingImageView getImageView() { return imageView; } @Override public void setPageController(PageController controller, int pageNumber) { super.setPageController(controller, pageNumber); final GestureDetector gestureDetector = new GestureDetector(context, new PageGestureDetector()); OnTouchListener gestureListener = (v, event) -> gestureDetector.onTouchEvent(event); imageView.setOnTouchListener(gestureListener); imageView.setClickable(true); imageView.setLongClickable(true); } private class PageGestureDetector extends GestureDetector.SimpleOnGestureListener { @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onSingleTapUp(MotionEvent event) { return pageController.handleTouchEvent(event, AyahSelectedListener.EventType.SINGLE_TAP, pageNumber); } @Override public boolean onDoubleTap(MotionEvent event) { return pageController.handleTouchEvent(event, AyahSelectedListener.EventType.DOUBLE_TAP, pageNumber); } @Override public void onLongPress(MotionEvent event) { pageController.handleTouchEvent(event, AyahSelectedListener.EventType.LONG_PRESS, pageNumber); } } }