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

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

Изображение 1

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

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

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

Solutions Collecting From Web of "Скользящий один фрагмент над другим в Android"

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

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

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

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

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

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

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

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

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

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

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

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

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

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