Компоненты MVVM + LiveData + ViewModel + Repository — Eventbus-Rx2 — AndroidX Jetpack — AS 3.6.1
lib_base: компоненты AndroidX, зависимости Arouter и аннотации, а также базовая конфигурация.
lib_annotation: все классы, которые необходимо защитить от запутывания (например, классы сущностей), должны быть снабжены аннотациями (включая внутренние классы).
lib_common: общие модули зависимостей, включая lib_base, lib_anotation и lib_network.
lib_network: модуль семейства R для сетевой инфраструктуры, который был упакован и может быть расширен и улучшен.
lib_miniui: небольшие пользовательские элементы управления, в том числе:
lib_refreshlayout: настраиваемый компонент обновления (уже интегрирован в главную страницу, находится на стадии тестирования).
lib_banner: настраиваемые баннеры (реализованы с использованием ViewPaper2, по умолчанию включают точечный индикатор Snake).
lib_media: расширение Google ExoPlayer для воспроизведения музыки и видео.
lib_pop: диалоги для обмена, оплаты, завершения задач, галереи/фотографирования, причём диалог для фотографирования имеет встроенные функции, которые могут быть вызваны напрямую.
lib_webview: расширение WebView, предоставляющее настройки расширения WebView (в будущем потребуется отдельный процесс и улучшение взаимодействия с JavaScript).
lib_sqlite: планируется улучшить с помощью Room (некоторые люди используют более эффективный LitePal).
Модули: другие модули, расширение новых модулей можно рассмотреть на примере module_login (в настоящее время включает перенаправление запросов).
module_location: управление адресом доставки (выбор местоположения с помощью Baidu Map).
module_pay: платёжный модуль (WeChat, Alipay, логика уже включена).
module_login: экран входа, где LoginActivity представляет собой обычный экран входа с номером телефона и кодом подтверждения.
module_productdetail: детали товара (демонстрация воспроизведения видео).
Третьи модули: сторонние модули.
lib-todaystepcounter: счётчик шагов из открытого исходного кода.
lib_stateview: глобальное вращение, загрузка сети/пустой вид (из открытого исходного кода, расширенный и улучшенный).
Обновление
1.0.0: базовая структура проекта поддерживает запутывание, базовую структуру, базовые сетевые инструменты и библиотеки инструментов.
1.1.0: добавлены несторонние библиотеки для погружения — возможно, это адаптация сторонних библиотек для погружения.
1.2.0: поддержка переключения между дневным и ночным режимами (на данный момент настройка заключается в изменении цвета фона страницы; если требуются другие настройки, обратитесь к соответствующим элементам управления или их значениям цвета).
1.3.0: изучение и практика настраиваемого компонента обновления lib_refreshlayout, отладка и оптимизация.
1.4.0: настраиваемые баннеры lib_banner реализованы с использованием Viewpaper2 и теперь включают индикатор Dot_Snake.
1.4.1: модуль входа в систему module_login включает навигацию и позволяет переходить к регистрации после входа.
1.4.2: нижняя навигация реализована с использованием BottomNavigationView и включает настройку сетевого значка и возможность повторного нажатия для обновления.
2019.06.25: после завершения основных функций движения и электронной коммерции (списки, списки покупок, выбор адреса доставки, информация о заказе, информация о логистике и т. д.) проект будет повторно опубликован.
Архитектура программного обеспечения
Рассматриваются только высокочастотные или встроенные сторонние компоненты, и в будущем некоторые элементы управления будут постепенно добавляться в библиотеку пользовательских представлений UI.
DataBinding: используется только для привязки элементов управления и обработки событий.
ViewModel<->LiveData: используется для наблюдения за динамическими изменениями данных.
Repository<->ViewModel<->BaseView: используется для извлечения данных из базы данных, сети и других источников; конечное состояние возвращается в BaseView (реализуется через интерфейс View).
Eventbus: используется для уведомления об обновлении данных между страницами.
R: отвечает за упаковку модуля lib_network.
Gson: собственный обработчик JSON, который включает пользовательский конвертер для удобства пользовательской обработки.
Glide: библиотека загрузки изображений от Google.
NotProguard: lib_anotation используется для защиты классов от запутывания, обычно настраиваемые классы сущностей требуют этой аннотации для предотвращения запутывания.
Smart обновление компонентов.
Exoplayer: официальный проигрыватель аудио и видео.
Easypermissions: официальная библиотека разрешений (уже включена в основную страницу).
Arouter: сторонний компонент маршрутизации (приложение определяет перехватчики, обрабатывающие вход в систему).
Установка
AS 3.6.1 + classpath 'com.android.tools.build:gradle:3.6.1'.
Рекомендуется обратиться к файлу config.gradle.
Использование
Config.gradle: отвечает за переключение состояний модулей (приложения или библиотеки), имена пакетов приложений и версии, а также версии сторонних зависимостей.
Module_login: служит основным справочником, включая конфигурацию build.gradle, наследование страниц с сервисами и создание viewmodels, инициирование запросов и обработку ответов.
OK: требуется дальнейшее улучшение обработки запросов, вращения списков и обновления, а также завершение работы над модулем lib_network.
Также необходимо реализовать некоторые страницы, похожие на главную страницу рынка.
CONTINUE: необходимо тщательно проанализировать структуру, упростить и оптимизировать соответствующие конфигурации и уровни.
Изображения
В запросе представлены изображения, но без описания. #### Вклад участников
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )