diff --git a/pdfViewer/src/main/java/com/rajat/pdfviewer/PdfRendererView.kt b/pdfViewer/src/main/java/com/rajat/pdfviewer/PdfRendererView.kt index 512a5c2..ffd573c 100644 --- a/pdfViewer/src/main/java/com/rajat/pdfviewer/PdfRendererView.kt +++ b/pdfViewer/src/main/java/com/rajat/pdfviewer/PdfRendererView.kt @@ -77,6 +77,7 @@ class PdfRendererView @JvmOverloads constructor( var zoomListener: ZoomListener? = null var statusListener: StatusCallBack? = null + var tapListener: TapListener? = null //region Public APIs fun isZoomedIn(): Boolean = this::recyclerView.isInitialized && recyclerView.isZoomedIn() @@ -262,6 +263,10 @@ class PdfRendererView @JvmOverloads constructor( zoomListener?.onZoomChanged(isZoomedIn, scale) } + recyclerView.setOnTapListener { + tapListener?.onTap() + } + recyclerView.post { postInitializationAction?.invoke() statusListener?.onPdfRenderSuccess() @@ -489,4 +494,8 @@ class PdfRendererView @JvmOverloads constructor( interface ZoomListener { fun onZoomChanged(isZoomedIn: Boolean, scale: Float) } + + fun interface TapListener { + fun onTap() + } } diff --git a/pdfViewer/src/main/java/com/rajat/pdfviewer/PinchZoomRecyclerView.kt b/pdfViewer/src/main/java/com/rajat/pdfviewer/PinchZoomRecyclerView.kt index 923b386..c968c44 100644 --- a/pdfViewer/src/main/java/com/rajat/pdfviewer/PinchZoomRecyclerView.kt +++ b/pdfViewer/src/main/java/com/rajat/pdfviewer/PinchZoomRecyclerView.kt @@ -38,6 +38,7 @@ class PinchZoomRecyclerView @JvmOverloads constructor( private var posY = 0f private var zoomChangeListener: ((Boolean, Float) -> Unit)? = null + private var tapListener: PdfRendererView.TapListener? = null private var anchorScale = 1f private var anchorFocusY = 0f @@ -61,6 +62,10 @@ class PinchZoomRecyclerView @JvmOverloads constructor( zoomChangeListener = listener } + fun setOnTapListener(listener: PdfRendererView.TapListener) { + tapListener = listener + } + /** * Handles touch interactions — zoom, pan, and scroll. */ @@ -291,6 +296,10 @@ class PinchZoomRecyclerView @JvmOverloads constructor( * GestureListener handles double-tap zoom. */ private inner class GestureListener : GestureDetector.SimpleOnGestureListener() { + override fun onSingleTapUp(e: MotionEvent): Boolean { + tapListener?.onTap() + return true + } override fun onDoubleTap(e: MotionEvent): Boolean { if (!isZoomEnabled) return false diff --git a/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt b/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt index 7547f0f..32520f4 100644 --- a/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt +++ b/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt @@ -30,6 +30,7 @@ fun PdfRendererViewCompose( statusCallBack: PdfRendererView.StatusCallBack? = null, zoomListener: PdfRendererView.ZoomListener? = null, onReady: ((PdfRendererView) -> Unit)? = null, + tapListener: PdfRendererView.TapListener? = null ) { val context = LocalContext.current val pdfViewRef = remember { mutableStateOf(null) } @@ -83,12 +84,14 @@ fun PdfRendererViewCompose( PdfRendererView(ctx).also { view -> view.statusListener = combinedCallback view.zoomListener = zoomListener + view.tapListener = tapListener pdfViewRef.value = view } }, update = { view -> view.statusListener = combinedCallback view.zoomListener = zoomListener + view.tapListener = tapListener if (!hasInit) { when {