Skip to content

BESTHACK-FasterThanLight/TryTask

Repository files navigation

App for BESTHack 2018

FasterThanLight

Состав

Описание

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

Эмулятор для тестирования

Приложение тестировалось на:

Samsung SM-G920F (Android 7.0, API 24)

Функционал

В нашем приложении существует три экрана, каждый из которых соответствует определенной задаче:

  1. Экран просмотра пользователей. На нем списком отображены все пользователи, внесенные в систему. По умолчанию в списке находится только наша команда. Нажатие на элемент списка совершает переход на экран профиля пользователя. Нажатие на кнопку добавления нового элемента в список совершает переход на экран создания нового пользователя. Данный экран обладает Recycler View, то есть может прокручиваться при наличии большего количества элементов списка, чем вмещается на экран. При наличии большого количества пользователей данный виджет эффективнее обычного списка, так как просмотренные элементы внутри него попадают в специальный пул, а не создаются заного.

  1. Экран профиля пользователя. В нем отражена вся информация о пользователе: изображение, имя, фамилия, отчество, группа, о себе. Данный экран обладает Scroll View, то есть может прокручиваться при наличии большего количества данных, чем вмещается на экран.

  1. Экран создания пользователя. В нем отражены поля для заполнения: имя, фамилия, отчество, группа, описание. При нажатии на изображение можно выбрать изображение из галереи. Нажатие на кнопку принятия создает пользователя и добавляет его в список. Поля, не заполненные при создании, будут приняты как отсутствующие.

Архитектура

Наше приложение основано на Clean Architecture. Для наглядности можно взглянуть на название пакетов внутри приложения - оно соответствует основным компонентам архитектуры.

Схема взаимодействия следующая:

View -> Interactors -> Repositories -> Data

Каждый компонент является независимым друг от друга. Внутри каждого из них выделен пакет, реализующий определенный функционал каждой сущности. Так, например, в каждом компоненте у нас существует пакет users или его аналоги (auth, различные виды представлений во view), которые обеспечивают работу с пользователем.

Data отвечает за модели данных или, как их еще называют, Entities, а так же за их DAO. Repositories реализует сервисы взаимодействия с моделями. Interactor осуществляет логику приложения на основе Respositories и предоставляет View готовые методы для взаимодействия. View содержит в себе все обособленные элементы отображения, каждый из которых содержит в себе два ключевых компонента - presenter и ui. Presenter является прослойкой между Interactor и ui, позволяющей обработать данные, взятые из логики приложения, для отображения определенным образом. В ui находятся все activity, fragments и интерфейсы для них же.

В папке utils хранятся различные независимые от сущностей классы, в нашем случае - Constants.

Стек технологий: RxAndroid, Dagger2, Room, Moxy, Krop

RxAndroid обеспечивает связь слоев и асинхронное выполнение трудоемких задач.

Dagger2 осуществляет Dependency Injections. В пакете di можно найти те же пакеты сущностей, как и в "архитектурных" пакетах, указанных выше, так как особые модули, компоненты и скоупы реализуются для каждой из них.

Room предоставляет удобный API для взаимодействия с SQLite без необходимости напрямую взаимодействовать с Cursor или ContentResolver. Через него мы реализуем создание пользователей и хранение.

Moxy предоставляет промежуточное хранилище между Presenter и Ui, которое позволяет сохранять состояние текущих view. Нам не нужно больше заботиться о том, что мы можем потерять текущее состояние view при смене ориентации экрана и каких-либо других случаях, уничтожающих фрагмент или активити.

Krop - библиотека от Avito, позволяющая выбирать картинку в инстаграмм-стиле.

Киллер-фичи:

  • Выбор фотографии прямо с телефона.
  • ???
  • Но это же уже круто!

About

App for BESTHack 2018

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages