[Feature Suggestion] Independent Zoom Controls: Decouple Zoom-In from Zoom-Out (with 1.0x Snap)

Open
#383 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
android, kotlin
Domain
mobile

Research direction

The issue names PageView.kt as the place where zoom behavior was tested. Read its gesture handling and the existing continuous zoom and Reset View controls first. Implement the independent zoom limits and the 1.0x snap described in the issue, then verify that zooming in and pinching back stops at full-screen scale without toolbar use.

Written by the indexing model from the issue text.

Description

Problem:

Currently, enabling "Continuous Zoom" allows zooming in to write fine details, but it also allows pinch gestures to zoom out below 1.0x (down to ~ 0.6x).

While the toolbar already has a handy "Reset View" button to return the canvas to 1.0x, having to lift your hand and tap the toolbar disrupts handwriting flow, requiring exiting Zen mode if in full-screen. Without gesture-level snapping or a floor at 1.0x, pinching back with your fingers frequently overshoots or leaves the canvas sitting at an awkward floating scale (like 0.88x or 1.12x).

Proposed Solution:

  1. "Allow Zoom In" (max 3.0x): Allows pinching to magnify the canvas for detailed handwriting, math, or sketching.
  2. "Allow Zoom Out" (min 0.5x): Disabled by default, preventing the canvas from shrinking smaller than the screen.
  3. 1.0x Gesture Snap: When zooming in and pinching back out, the gesture firmly snaps and stops at 1.0x (full-screen width).

Results:

  • You can zoom in to write small details and pinch back out to normal scale fluidly without having to reach up and tap the "Reset View" toolbar button each time.
  • Eliminates accidental canvas shrinking and floating margin drift during two-finger gestures.

Tested

I built and tested this locally on my Note 4C (using AI to help evaluate my code edits and suggest better implementation in PageView.kt). The 1.0x gesture snap makes zooming in for fine handwriting feel completely natural and keeps the canvas rock-solid at full-screen scale without needing toolbar intervention.

Image
Dominant language
Kotlin
Stars
269
Forks
44
Avg merge
1d 17h
Merged PRs (30d)
22

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Ethran/notable

All issues in Ethran/notable

Similar issues

More Kotlin issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.