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

OSCHINA-MIRROR/ssssssssd-Android-skin-support

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

Поддержка скинов Android: skin-support

  • |中文| In English|

skin-support build license

Skin-support — это простая в использовании структура скинов для Android. В лучшем случае для интеграции структуры требуется всего одна строка кода.

SkinCompatManager.withoutActivity(this).loadSkin();

Теперь у вас есть мощная функция настройки внешнего вида. Всё, что вам нужно сделать, это создать скин.

По умолчанию В приложении Плагин
default app-in plug-in

Содержание

Gradle Dependencies

Gradle Dependency доступна через jCenter,

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

Добавьте зависимости для AndroidX:

implementation 'skin.support:skin-support:4.0.5'                   // skin-support
implementation 'skin.support:skin-support-appcompat:4.0.5'         // skin-support basic widget
implementation 'skin.support:skin-support-design:4.0.5'            // skin-support-design material design support [selectable]
implementation 'skin.support:skin-support-cardview:4.0.5'          // skin-support-cardview CardView support [selectable]
implementation 'skin.support:skin-support-constraint-layout:4.0.5' // skin-support-constraint-layout ConstraintLayout support [selectable]

Добавьте зависимости для библиотек поддержки:

implementation 'skin.support:skin-support:3.1.4'                   // skin-support basic widget
implementation 'skin.support:skin-support-design:3.1.4'            // skin-support-design material design support [selectable]
implementation 'skin.support:skin-support-cardview:3.1.4'          // skin-support-cardview CardView support [selectable]
implementation 'skin.support:skin-support-constraint-layout:3.1.4' // skin-support-constraint-layout ConstraintLayout support [selectable]

Integration

Initialization

Только одна строка кода для интеграции фреймворка.

@Override
public void onCreate() {
    super.onCreate();
    SkinCompatManager.withoutActivity(this)                         // Basic Widget support
            .addInflater(new SkinMaterialViewInflater())            // material design support           [selectable]
            .addInflater(new SkinConstraintViewInflater())          // ConstraintLayout support          [selectable]
            .addInflater(new SkinCardViewInflater())                // CardView v7 support               [selectable]
            .setSkinStatusBarColorEnable(false)                     // Disable statusBarColor skin support,default true   [selectable]
            .setSkinWindowBackgroundEnable(false)                   // Disable windowBackground skin support,default true [selectable]
            .loadSkin();
}

Если ваша Activity наследуется от AppCompatActivity, вам необходимо переопределить метод getDelegate().

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

Load Skin

// Загрузить указанный скин
SkinCompatManager.getInstance().loadSkin("new.skin"[, SkinLoaderListener], int strategy);

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

Custom View skin support

  1. Реализуйте... SkinCompatSupportable интерфейс

  2. Примените ресурс скина в методе applySkin.

  3. Разрешите идентификатор ресурса скина в конструкторе.

  • Пользовательский вид может наследоваться напрямую от существующего виджета, такого как SkinCompatView, SkinCompatLinearLayout и т. д.

    Например: CustomTextView.

  • Если вы не хотите наследовать от существующего виджета.

    Например: CustomTextView2.

  • Если вам нужно настроить пользовательские атрибуты.

    // такие как атрибут R.attr.popupBackground AutoCompleteTextView

    Например: SkinCompatAutoCompleteTextView

  • Если вам необходимо использовать стороннюю библиотеку.

    // необходимо использовать виджет https://github.com/hdodenhof/CircleImageView

    Например: SkinCompatCircleImageView

Создайте скин

Встроенный скин:

Встроенный скин, если имя скина — «night», добавьте ресурс, который нужно оформить с суффиксом night или префиксом night.

Если исходный ресурс — R.color.windowBackgroundColor, то можно добавить ресурс R.color.windowBackgroundColor_night.

Загрузите встроенный скин:

SkinCompatManager.getInstance().loadSkin("night", SkinCompatManager.SKIN_LOADER_STRATEGY_BUILD_IN); // загрузка по суффиксу
SkinCompatManager.getInstance().loadSkin("night", SkinCompatManager.SKIN_LOADER_STRATEГИЯ_PREFIX_BUILD_IN); // загрузка по префиксу

Плагин-скин:

Новое приложение для Android

Поместите ресурсы скинов в каталог res

Если оригинальный фон окна

colors.xml

<color name="background">#ffffff</color>

для ночного режима вы можете добавить это в проект skin-night

colors.xml

<color name="background">#000000</color>

Сгенерированный apk — это пакет скинов

Вы можете переименовать night.apk в night.skin самостоятельно.

Загрузите пакет плагинов-скинов

Вы можете поместить пакет скинов в каталог assets/skins.

SkinCompatManager.getInstance().loadSkin("night.skin", SkinCompatManager.SKIN_LOADER_STRATEGY_ASSETS);

Или вы можете настроить стратегию загрузки:

Например:

Наследовать от SkinSDCardLoader, переопределить методы getSkinPath и getType.

public class CustomSDCardLoader extends SkinSDCardLoader {
    public static final int SKIN_LOADER_STRATEGY_SDCARD = Integer.MAX_VALUE;

    @Override
    protected String getSkinPath(Context context, String skinName) {
        return new File(SkinFileUtils.getSkinDir(context), skinName).getAbsolutePath();
    }

    @Override
    public int getType() {
        return SKIN_LOADER_STRATEGY_SDCARD;
    }
}

Зарегистрируйте эту стратегию в Application's onCreate

SkinCompatManager.withoutActivity(this).addStrategy(new CustomSDCardLoader());

Используйте эту стратегию для загрузки скина:

SkinCompatManager.getInstance().loadSkin("night.skin", null, CustomSDCardLoader.SKIN_LOADER_STRATEGY_SDCARD);

Кто использует

Если вы хотите перечислить здесь свой apk. Добро пожаловать в коммит pull request или свяжитесь с автором. ## Об авторе

Пэнфэн Ван (王鹏锋)

email: ximsfei@gmail.com

Лицензия MIT

Опубликовать ( 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