Я запрограммировал масштабируемую галерею с несколькими изображениями.
- Изображения можно увеличивать.
- Увеличенные изображения можно перетаскивать.
- Если изображениене масштабируется, галерею можно прокручивать.
Макет состоит из LinearLayout
с TextView
(название галереи) и самого Gallery
.
Элемент в галерее состоит из RelativeLayout
, содержащего FrameLayout
с ImageView
в нем (я читал, мне нужен FrameLayout для масштабирования) и TextView
, чтобы показать состояние масштабирования изображения.
Я использовал пользовательский View.OnTouchListener
для реализации масштабирования.
Теперь я пытался заменить изображение в ImageView
после , галерея перестала прокручиватьс высоким разрешением изображения, так что пользователь может увеличивать изображение намного лучше / дальше.
Я сделал это с OnItemSelectedListener
и setCallbackDuringFling
в false.
Даже это отлично работает, если вы бросаетеэкран быстро.
Но если вы удерживаете палец на дисплее и перемещаете его медленно к краю,OnItemSelectedListener
срабатывает до того, как следующий элемент достиг центра, и анимация прокрутки останавливается.Вместо этого галерея прыгает, как будто теряет сенсорный контакт, и сразу же центрирует следующий элемент в галерее.Также OnItemSelectedListener
вызывается более одного раза для одного и того же элемента при медленном перемещении пальца (я избегаю этой проблемы, сохраняя позицию последнего выбранного элемента).
Итак ( Короче говоря ) Я искал обратный вызов / прослушиватель эффекта "прокрутка / привязка к сетке" Gallery
.Я также попробовал AnimationListener
, но галерея возвращает ноль, когда я звоню getAnimation
.
Я в отчаянии ... может кто-нибудь помочь?