- PVSM.RU - https://www.pvsm.ru -
Заказчик хочет видеть на android полную кальку приложения с iOS? Не знаете от чего оттолкнуться? Тогда, добро пожаловать под кат.
Хочу сразу расставить все точки по своим местам, я ни в коем случаем не являюсь сторонником «кальки» интерфейса iOS приложений на android. Но думаю, многие разработчики сталкиваются с фразой заказчика “нужно также как и на айфоне”. Вообще эта палка о двух концах, с одной стороны многим будет непривычно видеть кнопку back сверху и тому подобное. Но с другой стороны, психологически люди довольны тем, что видят на своем андроиде за 5000 тысяч тоже, что и у друга на айфоне за 20000. Да и посмотрите на всякие популярные приблуды кастомизации лаунчеров, маскирующих ваш китаефон под продукцию от apple. В общем, после безрезультатных препираний с заказчиком, идем бороздить интернет в поиске кастомных вьюшек. Ниже будут представлены проекты, пытающиеся реализовать контролы iOS на android платформе.
Для этого контрола есть пару готовых проектов, один из них StickyListHeaders [1]:
и второй IndexableListView [2]:
На самом деле, для навигации по большому списку хватит и одного из способов.
Нашел только этот проект Android-UItableView [3]:
В этом проекте используются пару view с закругленными углами и небольшая обертка поверх всего. Все достаточно прозрачно и легко кастомизируется.
Этот контрол кастомизировался одним из первых, так как на старых версиях android стандартный datepicker был крайне неудобен. В связи с этим, количество проектов велико, вот некоторые из них — DateSlider [4]:
Scroll Picker [5]:
В свое время очень сильно помогла вот эта [6] статья и эта [7], где подробно описаны достоинства и недостатки имеющихся на тот момент реализаций данного ui-паттерна. Наиболее красивым и рабочим, на мой взгляд, выглядит проект [8] от Криса Бэйнса:
Но проект довольно громоздкий, поэтому для себя выбрал вот этот [9], еще больше упростил его, удалив «адаптер-ширму».
Данный контрол довольно легко реализовать самому, но кто не готов писать свой велосипед, может взять для примера Segmented Radio Button [10]:
За основу можно взять один из этих проектов, раз [11]:
два [12]:
Принцип один и тот же, за основу берется PopupWindow, ему подсовывается кастомная вьюшка и координаты, где окно должно появиться. Можно самому допилить проект, добавив стрелку указатель, положение которой будет регулироваться padding-ами. Для меня больше проблем возникало с размером окна, я пользовался фиксированными значениями, так как не особо получалось заставить врапиться по содержимому listview, возможно у кого-то есть какие мысли/проекты, где решена данная проблема, было бы любопытно взглянуть.
В принципе, можно обойтись и двумя drawable, менять их местами при нажатии, но выглядит это не так эстетично. Так что для эстетов имеется Switch Demo [13], который однозначно просится напильника:
Многие представленные контролы не повторяют функциональность оригинала на 100%, но хотя бы есть от чего оттолкнуться и, в большинстве случаев, можно доделать все ручками.
Если у кого какие либо проекты на примете есть, отпишитесь пожалуйста в коментах.
Автор: zoo
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/31543
Ссылки в тексте:
[1] StickyListHeaders: https://github.com/emilsjolander/StickyListHeaders
[2] IndexableListView: https://github.com/woozzu/IndexableListView
[3] Android-UItableView : https://github.com/thiagolocatelli/android-uitableview
[4] DateSlider: https://github.com/bendemboski/DateSlider
[5] Scroll Picker : http://code.google.com/p/scroll-picker-view-for-android/
[6] эта: http://habrahabr.ru/post/135226/
[7] эта: http://habrahabr.ru/post/132277/
[8] проект: https://github.com/chrisbanes/Android-PullToRefresh
[9] вот этот: https://github.com/ondesly/Pull-to-refresh
[10] Segmented Radio Button: https://github.com/makeramen/android-segmentedradiobutton
[11] раз: https://github.com/u1aryz/Android-NewPopupMenu
[12] два: https://github.com/lorensiuswlt/NewQuickAction3D
[13] Switch Demo: https://github.com/pellucide/Android-Switch-Demo-pre-4.0
[14] Источник: http://habrahabr.ru/post/175967/
Нажмите здесь для печати.