1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ssssssssd-Android-skin-support

Клонировать/Скачать
README.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 22:55 e26f53a

Введение

Android-skin-support — это фреймворк для смены скинов (тем оформления) на Android, который отличается простотой в освоении и обеспечивает высокое качество пользовательского опыта.

Для реализации смены скина достаточно всего одной строки кода:

SkinCompatManager.withoutActivity(this).loadSkin();

После этого ваш APK уже будет обладать мощными возможностями смены тем оформления. Однако не забудьте создать скин для своего приложения.

Функции

  • Поддержка смены ресурсов в макетах.
  • Поддержка изменения ресурсов через код.
  • По умолчанию поддерживается большинство базовых компонентов и смена тем Material Design.
  • Поддерживается динамическая настройка темы с помощью значений цвета и выбор изображений из SD-карты в качестве ресурсов для смены оформления drawable.
  • Поддерживаются различные стратегии загрузки (в приложении, плагин, пользовательский путь SD-карты, zip и другие ресурсы).
  • Ресурсы загружаются в следующем порядке приоритета: динамически установленные ресурсы, ресурсы из выбранной стратегии загрузки, плагины или ресурсы приложения.
  • Возможность настройки под свои нужды, выбирая необходимые модули для загрузки.
  • Поддержка векторных изображений (vector/svg) для смены оформления.
  • Начиная с версии 4.0.0, skin-support поддерживает AndroidX, а версии ниже 4.0.0 поддерживают библиотеку поддержки.

Более подробную информацию можно найти в журнале изменений, где есть записи обо всех функциях.]

Задачи

  • Развязка с AndroidX.
  • Поддержка собственных компонентов.
  • Многоязычность.
  • Несколько шрифтов.
  • Настройки.
  • Реализация skin-mobile:
    • Динамическое изменение значений темы.
    • Примеры использования компонентов.
    • Информация о странице.
  • Wiki.

Структура каталогов

demo // Коллекция примеров смены оформления

skin-sample(skin-app) // Пример приложения

skin-night // Проект ночной темы

androidx // Компоненты Android

skin-support // Фреймворк смены оформления

skin-support-appcompat // Фреймворк смены оформления, поддержка базовых компонентов

skin-support-cardview // Фреймворк смены оформления, поддержка CardView

skin-support-design // Фреймворк смены оформления, поддержка Material Design

skin-support-constraint-layout // Фреймворк смены оформления, поддержка ConstraintLayout

third-part-support // Поддержка смены оформления для сторонних компонентов

Демонстрация

default app-in plug-in

Использование

Для выбора последней версии рекомендуется обратиться к журналу изменений.

Импорт

Библиотека поддержки

Если в проекте всё ещё используется библиотека поддержки, добавьте следующие зависимости:

implementation 'skin.support:skin-support:3.1.4'                   // skin-support 基础控件支持
implementation 'skin.support:skin-support-design:3.1.4'            // skin-support-design material design 控件支持[可选] **Реализация 'skin.support:skin-support-cardview:3.1.4' // skin-support-cardview CardView 控件支持[可选]**

**Реализация 'skin.support:skin-support-constraint-layout:3.1.4' // skin-support-constraint-layout ConstraintLayout 控件支持[可选]**  

В Application onCreate инициализация:  

```java
@Override
public void onCreate() {
    super.onCreate();
    SkinCompatManager.withoutActivity(this)                         // Базовая инициализация замены вида
            .addInflater(new SkinMaterialViewInflater())            // Инициализация замены материала дизайна (опционально)
            .addInflater(new SkinConstraintViewInflater())          // Инициализация замены ConstraintLayout (опционально)
            .addInflater(new SkinCardViewInflater())                // Инициализация замены CardView v7 (опционально)
            .setSkinStatusBarColorEnable(false)                     // Отключить замену цвета строки состояния, по умолчанию включено (опционально)
            .setSkinWindowBackgroundEnable(false)                   // Отключить замену фона окна, по умолчанию включено (опционально)
            .loadSkin();
}

Если проект использует Activity, унаследованный от AppCompatActivity, необходимо перегрузить метод getDelegate().

@NonNull
@Override
public AppCompatDelegate getDelegate() {
    return SkinAppCompatDelegateImpl.get(this, this);
}

AndroidX support:

Если проект использует AndroidX, добавьте следующие зависимости:

implementation 'skin.support:skin-support:4.0.5'  // skin-support
implementation 'skin.support:skin-support-appcompat:4.0.5'  // skin-support базовая поддержка вида
implementation 'skin.support:skin-support-design:4.0.5' // skin-support поддержка дизайна материала (опционально)
implementation 'skin.support:skin-support-cardview:4.0.5'  // skin-support поддержка CardView (опционально)
implementation 'skin.support:skin-support-constraint-layout:4.0.5' // skin-support поддержка ConstraintLayout (опционально)

⚠️ С версии 3.x.x на версию 4.0.5+ миграция, отделяющая зависимость библиотеки замены вида от пакета appcompat, требует добавления следующего кода:

implementation 'skin.support:skin-support-appcompat:4.0.5'  // skin-support базовая поддержка вида

Инициализация в Application onCreate:

@Override
public void onCreate() {
    super.onCreate();
    SkinCompatManager.withoutActivity(this)
            .addInflater(new SkinAppCompatViewInflater())  // Базовая замена вида
            .addInflater(new SkinMaterialViewInflater())    // Замена материала дизайна (опционально)
            .addInflater(new SkinConstraintViewInflater())  // Замена ConstraintLayout (опционально)
            .addInflater(new SkinCardViewInflater())        // Замена CardView v7 (опционально)
            .setSkinStatusBarColorEnable(false)              // Отключить замену цвета строки состояния, по умолчанию включено (опционально)
            .setSkinWindowBackgroundEnable(false)            // Отключить замену фона окна, по умолчанию включено (опционально)
            .loadSkin();
}

Если проект использует Activity, унаследованную от AppCompatActivity, необходимо перегрузить метод getDelegate():

@NonNull
@Override
public AppCompatDelegate getDelegate() {
    return SkinAppCompatDelegateImpl.get(this, this);
}

Использование:

Переключатель скинов:

Если у проекта есть особые требования, например, для управления акциями: вид элемента управления всегда красный или зелёный и не требует замены при переключении режима.

Можно использовать аналогичный метод, напрямую устанавливая drawable:

setBackgroundDrawable(redDrawable) // Не поддерживает замену
background="#ce3d3a"

Вместо использования R.drawable.red:

setBackgroundResource(R.drawable.red)
background="@drawable/red"

Загрузка плагина замены скина:

// Указать скин-плагин
SkinCompatManager.getInstance().loadSkin("new.skin"[, SkinLoaderListener], int strategy);

// Восстановить приложение по умолчанию
SkinCompatManager.getInstance().restoreDefaultTheme();

Пользовательская замена вида:

Основные моменты:

  1. Реализовать интерфейс SkinCompatSupportable.
  2. В методе applySkin реализовать операцию замены вида.
  3. В конструкторе проанализировать требуемый resId для замены вида.
  • Пользовательский вид может напрямую наследовать от SkinCompatView, SkinCompatLinearLayout и других существующих видов.
  • Не хотите наследовать от существующих видов?
  • Нужно заменить пользовательские свойства вида?
  • Необходимо заменить атрибуты пользовательского вида?

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ssssssssd-Android-skin-support.git
git@api.gitlife.ru:oschina-mirror/ssssssssd-Android-skin-support.git
oschina-mirror
ssssssssd-Android-skin-support
ssssssssd-Android-skin-support
master