Как сгенерировать colorPrimaryDark программно с учетом основного цвета? - PullRequest
0 голосов
/ 30 мая 2018

Как сгенерировать темный оттенок из основного цвета и установить с ним цвет строки состояния?имейте в виду, что если цвет яркий, значки должны быть темными и наоборот

Ответы [ 4 ]

0 голосов
/ 31 мая 2018

Нет таких рекомендаций для генерации colorPrimaryDark.Это просто должен быть более темный оттенок по отношению к основному цвету.Вот код для генерации более темного оттенка данного цвета * коэффициент 1001 *

public static int manipulateColor(int color, float factor) {
    int a = Color.alpha(color);
    int r = Math.round(Color.red(color) * factor);
    int g = Math.round(Color.green(color) * factor);
    int b = Math.round(Color.blue(color) * factor);
    return Color.argb(a,
            Math.min(r,255),
            Math.min(g,255),
            Math.min(b,255));
}

показывает, насколько вы хотите затемнить его, передавая что-нибудь между 0-1

0 голосов
/ 30 мая 2018
if (Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(getResources().getColor(R.color.primaryDark));

}

легко сделать с помощью метода setStatusBarColor (int) в классе Window.Но помните, что этот метод доступен только для API 21 или выше.Поэтому убедитесь, что это проверено, иначе ваше приложение непременно рухнет на нижних устройствах.

это рабочий пример кода этого метода.

0 голосов
/ 30 мая 2018

StatusBarColor можно изменить на 21 версии API и выше.Есть два способа установить статусBarColor

  1. Создать одну папку значений-21 и добавить стиль в нее, добавить эту строку

<item name="android:statusBarColor">@color/colorprimary</item>

или

, если вы не хотите создавать другую папку, добавьте в свой основной стиль строку ниже, например,

<item name="android:statusBarColor" tools:targetApi="lollipop">@color/colorprimary</item>

Вы можете установить его, добавив условие типа

if(android.os.Build.VERSION.SDK_INT >= 21){ activity.getWindow().
setStatusBarColor(ContextCompat.getColor(activity, color));
        }
0 голосов
/ 30 мая 2018

Вы можете изменить цвет строки состояния как: -

if (android.os.Build.VERSION.SDK_INT >= 21)                                               
            {
                getWindow().setStatusBarColor(getResources().getColor(R.color.anycolor));              

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...