Android-skin-support — это фреймворк для смены скинов (тем оформления) на Android, который отличается простотой в освоении и обеспечивает высокое качество пользовательского опыта.
Для реализации смены скина достаточно всего одной строки кода:
SkinCompatManager.withoutActivity(this).loadSkin();
После этого ваш APK уже будет обладать мощными возможностями смены тем оформления. Однако не забудьте создать скин для своего приложения.
Более подробную информацию можно найти в журнале изменений, где есть записи обо всех функциях.]
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 // Поддержка смены оформления для сторонних компонентов
Для выбора последней версии рекомендуется обратиться к журналу изменений.
Если в проекте всё ещё используется библиотека поддержки, добавьте следующие зависимости:
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, добавьте следующие зависимости:
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();
Основные моменты:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )