Улучшение пользовательского опыта: сопоставление цвета строки состояния с цветом приложения

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

Метод 1: использование класса Window (Java)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(ContextCompat.getColor(this, R.color.status_bar_color));
}

Метод 2: использование класса Window (Kotlin)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    window.apply {
        addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
        statusBarColor = ContextCompat.getColor(this@MainActivity, R.color.status_bar_color)
    }
}

Метод 3. Использование библиотеки SystemBarTintManager (Java)

SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintColor(ContextCompat.getColor(this, R.color.status_bar_color));

Метод 4. Использование библиотеки SystemBarTintManager (Kotlin)

val tintManager = SystemBarTintManager(this)
tintManager.isStatusBarTintEnabled = true
tintManager.setStatusBarTintColor(ContextCompat.getColor(this, R.color.status_bar_color))

Метод 5. Использование класса WindowInsetsController (Java/Kotlin)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    WindowInsetsController controller = getWindow().getInsetsController();
    if (controller != null) {
        controller.setSystemBarsAppearance(0, WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS);
        controller.setSystemBarsColor(ContextCompat.getColor(this, R.color.status_bar_color));
    }
}

Реализуя любой из упомянутых выше методов, разработчики могут гарантировать, что цвет строки состояния полностью соответствует цвету приложения, обеспечивая визуально приятный интерфейс для пользователей приложения. Внимание к таким деталям улучшает общее впечатление пользователя и демонстрирует приверженность качественному дизайну.