Перетаскивание ViewSwitcher (ср. Просмотр календарной недели / разговоры в Google Talk) - PullRequest
2 голосов
/ 30 июля 2010

Я хочу реализовать что-то вроде просмотра недели в Android-календаре, где вы можете перемещаться по неделям, или как приложение Talk, где вы можете переключаться между разговорами. Другими словами, я хочу иметь возможность перетаскивать представления, а не просто проводить их пальцем.

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

Я просматриваю источник в Календаре, но участвующие в нем классы настолько огромны, что я не могу понять, как это сделать.

Кто-нибудь делал что-то подобное или есть какой-нибудь (относительно краткий) источник, доступный где-то?

Приветствие.

Ответы [ 2 ]

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

Вы должны использовать ViewPager из пакета совместимости Android.

Это хорошее место для начала. Это будет делать именно то, что вы хотите.

1 голос
/ 06 мая 2011

Я посмотрел на код календаря, и вот что я понял:

WeekActivity содержит ViewSwitcher, который состоит из двух CalendarView. Когда пользователь генерирует событие прокрутки, событие обнаруживается CalendarActivity и получает координату X прокрутки. Текущее представление является недействительным, что вызывает функцию onDraw() объекта CalendarView (метод onDraw() - это место, где отображаются сетка и события).

В onDraw() холст переводится с использованием X (canvas.translate(x)), а метод onDraw() другого представления ViewSwitcher вызывается для заполнения остальной части содержимого.


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

...