Files

40 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Proposal
## Why
В веб-просмотрщике фото можно приблизить (колесо, `Space`), а в Android-клиенте
изображения в полноэкранном просмотре открываются только во вписанном виде — в 360-панораме
зум есть, в обычных фото нет. Пользователь не может рассмотреть деталь снимка на телефоне.
## What Changes
- В полноэкранный просмотр обычных изображений добавляется зум пальцами:
- pinch увеличивает/уменьшает, панорамирование при увеличении, двойной тап
переключает вписанный вид и 100% натурального размера с якорем в точку тапа.
- Предел зума — 200% натурального размера изображения, минимум — вписанный вид
(семантика веб-просмотрщика, адаптированная под тач).
- При входе в зум догружается оригинал (`originalUrl`), другие фото сбрасываются во
вписанный вид при переходе.
- Пока изображение увеличено, горизонтальный свайп не листает альбом — жест отдан
панорамированию (как для панорамы).
- Исключения: видео и 360-панорама не затрагиваются (у панорамы зум уже есть).
## Capabilities
### New Capabilities
<!-- none -->
### Modified Capabilities
- `android-client`: требование «Просмотр медиа на весь экран» расширяется зумом
изображений — pinch, панорамирование, двойной тап, предел, догрузка оригинала,
поведение pager и сброс при смене фото.
## Impact
- `android/app/src/main/java/com/galo/android/ui/viewer/ViewerScreen.kt` — обёртка
изображения и проброс состояния зума в `ViewerContent` (блокировка pager).
- Новый zoomable-компонент изображения (ручной `pointerInput` + `graphicsLayer`),
без новых зависимостей.
- Тесты: Robolectric «свайп не листает увеличенное фото»; юнит на предел и якорь.
- Серверная часть и веб-клиент не меняются.