给定主色,如何以编程方式生成colorPrimaryDark?

时间:2018-05-29 21:27:57

标签: android material-design

如何从原色生成暗色调并使用它设置状态栏颜色?请记住,如果颜色鲜艳,图标应该是暗的,反之亦然

4 个答案:

答案 0 :(得分:1)

没有生成colorPrimaryDark的指南。它必须是原色的深色调。这是用于生成给定颜色的深色调的代码

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之间传递任何东西

答案 1 :(得分:-1)

您可以将状态栏的颜色更改为: -

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

            }

答案 2 :(得分:-1)

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));

}

使用Window类中的setStatusBarColor(int)方法轻松完成。但请记住,此方法仅适用于API 21或更高版本。所以一定要检查一下,否则你的应用肯定会在较低的设备中崩溃。

这是此方法的工作示例代码。

答案 3 :(得分:-1)

可以在21 API及更高版本上更改StatusBarColor。 有两种方法可以设置statusBarColor

  1. 创建一个值为21的文件夹并在其中添加样式 添加此行
  2. <item name="android:statusBarColor">@color/colorprimary</item>

    如果您不想创建另一个文件夹,那么在您的主要样式中添加如下所示的

    <item name="android:statusBarColor" tools:targetApi="lollipop">@color/colorprimary</item>
    
    1. 您可以通过添加

      等条件来设置它
      if(android.os.Build.VERSION.SDK_INT >= 21){ activity.getWindow().
      setStatusBarColor(ContextCompat.getColor(activity, color));
              }