Fixed – main sections decorated according to other modules template

This commit is contained in:
Daniil Borisovskii 2019-09-02 14:41:49 +03:00
parent bd8a642c72
commit c4c07ee8a0
1 changed files with 22 additions and 14 deletions

View File

@ -1,14 +1,17 @@
tabbar-navigation
===
Модуль, упрощающий добавление таббара с обособленной навигацией в каждой табе. Данный модуль базируется на классах модуля `navigation` `NavigationActivity`, `ViewControllerNavigation`, `ViewController`.
Модуль, упрощающий добавление таббара с обособленной навигацией в каждой табе. Данный модуль базируется на классах модуля [navigation](https://github.com/TouchInstinct/RoboSwag/tree/master/navigation) `NavigationActivity`, `ViewControllerNavigation`, `ViewController`.
### Подключение
### Основные интерфейсы и классы
```gradle
implementation project(':tabbar-navigation')
```
### Последовательность необходимых действий с основными классами для организации навигации:
`BottomNavigationActivity` абстрактный класс, наследуемый от класса `NavigationActivity` и содержащий в себе 2 объекта:
* `navigation` объект, используемый для навигации на уровне `Activity`. При работе с навигацией используя этот объект таббар скрывается на открываемом экране, и переключиться на какую-нибудь другую табу нельзя.
* `innerNavigation` объект, используемый для навигации вннутри табы. При работе с навигацией используя этот объект таббар остается видимым на открываемом экране, таким образом сохраняя возможность переключаться по остальным табам таббара.
`BottomNavigationFragment` абстраткный класс, наследуемый от `Fragment` и содержащий в себе логику по настройке навигации используя вложенный объект `BottomNavigationController`.
#### Последовательность необходимых действий с основными классами для организации навигации:
1. Отнаследовать главную `Activity` приложения от `BottomNavigationActivity` и переопределить следующие поля:
@ -25,12 +28,12 @@ implementation project(':tabbar-navigation')
***Количество кнопок в таббаре может быть произвольным***
### Интерфейс для работы с таббаром
#### Дополнительно
1. В классе ```BottomNavigationFragment``` можно также переопределить поле ```val reselectListener: (() -> Unit)```, отвечающее за повторное нажатие на уже открытую табу. По умолчанию происходит переход к низу стека фрагментов открытой табы ```getNavigationActivity().innerNavigation.up()```
Для навигации используются объекты-наследники класса `ViewControllerNavigation`
2. Объекты ```innerNavigation``` в классе ```BottomNavigationActivity``` и ```navigation``` в классе ```NavigationActivity``` помечены как ```open```, давая тем самым возможность добавить кастомную логику переопределив их.
1. Для навигации внутри табы необходимо использовать объект ```activity.innerNavigation```. При использовании этого метода таббар остается видимым на открываемом экране, таким образом сохраняя возможность переключаться по остальным табам таббара.
2. Для навигации на уровне ```Activity``` необходимо использовать объект ```activity.navigation```. При использовании этого метода таббар скрывается на открываемом экране, и переключиться на какую-нибудь другую табу нельзя.
3. В случае, если открыта любая таба кроме главной (```topLevelViewControllerId```) со значением ```backStackEntryCount = 0```, нажатие на системную кнопку "Назад" предварительно откроет главную табу, прежде чем отработает действие кнопки по умолчанию.
### Примеры
@ -114,11 +117,16 @@ class MainViewController(
}
```
### Дополнительно
### Зависимости
1. В классе ```BottomNavigationFragment``` можно также переопределить поле ```val reselectListener: (() -> Unit)```, отвечающее за повторное нажатие на уже открытую табу. По умолчанию происходит переход к низу стека фрагментов открытой табы ```getNavigationActivity().innerNavigation.up()```
Поскольку модуль базируется на классах модуля [navigation](https://github.com/TouchInstinct/RoboSwag/tree/master/navigation), то необходимо подключить его.
2. Объекты ```innerNavigation``` в классе ```BottomNavigationActivity``` и ```navigation``` в классе ```NavigationActivity``` помечены как ```open```, давая тем самым возможность добавить кастомную логику переопределив их.
```gradle
implementation project(':navigation')
```
3. В случае, если открыта любая таба кроме главной (```topLevelViewControllerId```) со значением ```backStackEntryCount = 0```, нажатие на системную кнопку "Назад" предварительно откроет главную табу, прежде чем отработает действие кнопки по умолчанию.
### Подключение
```gradle
implementation project(':tabbar-navigation')
```