- PVSM.RU - https://www.pvsm.ru -

Кастомизация Android контролов под iOS стиль

Кастомизация Android контролов под iOS стиль

Заказчик хочет видеть на android полную кальку приложения с iOS? Не знаете от чего оттолкнуться? Тогда, добро пожаловать под кат.

Зачем и почему?

Хочу сразу расставить все точки по своим местам, я ни в коем случаем не являюсь сторонником «кальки» интерфейса iOS приложений на android. Но думаю, многие разработчики сталкиваются с фразой заказчика “нужно также как и на айфоне”. Вообще эта палка о двух концах, с одной стороны многим будет непривычно видеть кнопку back сверху и тому подобное. Но с другой стороны, психологически люди довольны тем, что видят на своем андроиде за 5000 тысяч тоже, что и у друга на айфоне за 20000. Да и посмотрите на всякие популярные приблуды кастомизации лаунчеров, маскирующих ваш китаефон под продукцию от apple. В общем, после безрезультатных препираний с заказчиком, идем бороздить интернет в поиске кастомных вьюшек. Ниже будут представлены проекты, пытающиеся реализовать контролы iOS на android платформе.

Table View — to present an indexed list of items

Кастомизация Android контролов под iOS стиль

Для этого контрола есть пару готовых проектов, один из них StickyListHeaders [1]:

Кастомизация Android контролов под iOS стиль

и второй IndexableListView [2]:

Кастомизация Android контролов под iOS стиль

На самом деле, для навигации по большому списку хватит и одного из способов.

Table View — to display detail information

Кастомизация Android контролов под iOS стиль

Нашел только этот проект Android-UItableView [3]:

Кастомизация Android контролов под iOS стиль

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

Date Picker

Кастомизация Android контролов под iOS стиль

Этот контрол кастомизировался одним из первых, так как на старых версиях android стандартный datepicker был крайне неудобен. В связи с этим, количество проектов велико, вот некоторые из них — DateSlider [4]:

Кастомизация Android контролов под iOS стиль

Scroll Picker [5]:

Кастомизация Android контролов под iOS стиль

Pull To Refresh

Кастомизация Android контролов под iOS стиль

В свое время очень сильно помогла вот эта [6] статья и эта [7], где подробно описаны достоинства и недостатки имеющихся на тот момент реализаций данного ui-паттерна. Наиболее красивым и рабочим, на мой взгляд, выглядит проект [8] от Криса Бэйнса:

Кастомизация Android контролов под iOS стиль

Но проект довольно громоздкий, поэтому для себя выбрал вот этот [9], еще больше упростил его, удалив «адаптер-ширму».

Segmented Control

Кастомизация Android контролов под iOS стиль

Данный контрол довольно легко реализовать самому, но кто не готов писать свой велосипед, может взять для примера Segmented Radio Button [10]:

Кастомизация Android контролов под iOS стиль

Popover

Кастомизация Android контролов под iOS стиль

За основу можно взять один из этих проектов, раз [11]:

Кастомизация Android контролов под iOS стиль

два [12]:

Кастомизация Android контролов под iOS стиль

Принцип один и тот же, за основу берется PopupWindow, ему подсовывается кастомная вьюшка и координаты, где окно должно появиться. Можно самому допилить проект, добавив стрелку указатель, положение которой будет регулироваться padding-ами. Для меня больше проблем возникало с размером окна, я пользовался фиксированными значениями, так как не особо получалось заставить врапиться по содержимому listview, возможно у кого-то есть какие мысли/проекты, где решена данная проблема, было бы любопытно взглянуть.

Switch

Кастомизация Android контролов под iOS стиль

В принципе, можно обойтись и двумя drawable, менять их местами при нажатии, но выглядит это не так эстетично. Так что для эстетов имеется Switch Demo [13], который однозначно просится напильника:

Кастомизация Android контролов под iOS стиль

Итог

Многие представленные контролы не повторяют функциональность оригинала на 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/