скользя один фрагмент над другим в Android - PullRequest
23 голосов
/ 10 февраля 2012

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

image 1

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

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

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

Ответы [ 4 ]

4 голосов
/ 01 марта 2012

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

2 голосов
/ 02 апреля 2012

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

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

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

2 голосов
/ 20 февраля 2012

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

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

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

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

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

1 голос
/ 20 февраля 2012

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

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

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

Это идея из головы, никогда не пробовал.1008 * Надеюсь, это поможет вам.Ура!

...