Подтвердить что ты не робот

Скользящий один фрагмент над другим в Android

В андроиде мы можем скользить фрагмент над другим? Например, на следующем изображении:

image 1

Есть два фрагмента. Один - красный, а другой синий. Если пользователь нажимает пальцем на черную стрелку и перетаскивает ее вправо, фрагмент красного цвета также тащится вместе с ним, тем самым покрывая синий фрагмент. В конце концов красный фрагмент покрывает весь синий фрагмент. Кроме того, если пользователь поднимает палец до того, как красный фрагмент был перетащен на половину синего фрагмента, красный фрагмент должен вернуться в исходное место (и, таким образом, не покрыть синий фрагмент). Однако, если пользователь не поднимает палец (т.е. Перетаскивает стрелку), пока красный фрагмент не покрывает более половины синего фрагмента или всего синего фрагмента, тогда красный фрагмент должен покрыть весь синий фрагмент.

Кроме того, если есть какие-либо взгляды на красноцветный фрагмент (например, Buttons, EditTexts и т.д.), тогда они также получат соответствующий размер.

Есть ли способ сделать это? Если да, то как?

4b9b3361

Ответ 1

Вы рассматривали использование или расширение SlidingDrawer? Вы можете иметь красный фрагмент как содержимое ящика, а черную стрелку - как ручку.

Ответ 2

Я предполагаю, что вы пытаетесь сделать что-то вроде последнего пользовательского интерфейса Android Market? Где вы можете скользить по фрагментам, показывающим разные вещи, правильно?

Если это то, то я рекомендую вам взглянуть на этот сайт: http://viewpagerindicator.com/

Это проект, сделанный Джейком Уортоном, который делает то, о чем вы просите. Вы можете загрузить его исходный код, чтобы найти способ его реализации самостоятельно или просто использовать его как библиотеку (это также объясняется на веб-сайте).

За дополнительной информацией я бы порекомендовал вам взглянуть на Фрагменты и FragmentActivity в Android, вот ссылка на пример, который использует как фрагменты, так и FragmentActivity, но в Интернете есть много: http://www.e-nature.ch/tech/?p=6

Надеюсь, это поможет!

Ответ 3

Я предполагаю, что вы будете использовать настраиваемую группу просмотра, которая расширяет линейную линейку. Внутренние представления должны иметь макет, чтобы определить их часть экрана.

Вы должны переопределить свои пользовательские группы просмотра onLayout и onMeassure, помните, что группа просмотра вызывает meassurements и макеты своих дочерних элементов для плавного масштабирования.

Надеюсь, это поможет.

Ответ 4

Я не могу придумать более простой способ... поэтому попробуйте сделать это вот так:

Попробуйте использовать FrameLayout. Добавьте один синий LinearLayout, после чего добавьте один красный LinearLayout, например. Тогда красная компоновка была бы более синей.

Прикрепите прослушиватель onTouch к красной компоновке. Сделайте простой подсчет координат x и y, который TouchEvent дает вам, чтобы программно установить LayoutParams красного макета, например, ширину.

Эта идея с моей головы никогда не пробовала.

Надеюсь, что это поможет тебе. Ура!