切换应用时如何更改此栏的颜色?

时间:2015-03-27 01:33:27

标签: android window switching

添加Lollipop后,您现在可以在更改应用时更改此窗口的颜色。我不知道它叫什么,因此无法找到它的任何信息但是如果你看图像你可以看到Keep应用程序现在是黄色的。

如何更改此颜色?

Here is a link to the image, it won't let me attach it since I'm new

由于

3 个答案:

答案 0 :(得分:4)

您可以使用setTaskDescription()来实现此目的:

setTaskDescription(new ActivityManager.TaskDescription(label, icon, color));

对于android文档:

  

设置描述此活动的任务的信息   在最近的系统UI中进行演示。当getRecentTasks(int,   调用int),按顺序遍历每个任务的活动   从最顶层的活动到最底层的活动。遍历继续   对于每个属性,直到找到合适的值。对于每项任务   taskDescription将在ActivityManager.TaskDescription中返回。

     

参数taskDescription TaskDescription属性   用此活动描述任务

https://developer.android.com/reference/android/app/Activity.html#setTaskDescription(android.app.ActivityManager.TaskDescription)

答案 1 :(得分:0)

只需将此代码放入目标活动的onCreate方法中即可

int color = getResources().getColor(R.color.your_top_bar_color);
setTaskDescription(new ActivityManager.TaskDescription(null, null, color));

请注意,以上代码要求API级别21(Android 5.0 Lolipop)或更高。如果还需要支持较旧的设备,则可以在代码周围加上以下条件:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    int color = getResources().getColor(R.color.your_top_bar_color);
    setTaskDescription(new ActivityManager.TaskDescription(null, null, color));
}

另外请注意,您将需要在每个活动中设置顶部栏的颜色,否则在启动另一个活动时将重置您的颜色。 (您可以通过将代码放入某种BaseActivity中来缓解此问题,其他Activity将从中继承。)

有关此主题的有用文章:https://www.bignerdranch.com/blog/polishing-your-Android-overview-screen-entry/

答案 2 :(得分:-1)

1.正常方式

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        String title = getString(R.string.app_name);
        Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        int color = getResources().getColor(R.color.color_primary);
        setTaskDescription(new ActivityManager.TaskDescription(title, icon, color));
}

2.reflected

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
   try {
            Class<?> clazz = Class.forName("android.app.ActivityManager$TaskDescription");
            Constructor<?> cons = clazz.getConstructor(String.class, Bitmap.class, int.class);
            Object taskDescription = cons.newInstance(title, icon, color);

            Method method = ((Object) BaseActivity.this).getClass().getMethod("setTaskDescription", clazz);
            method.invoke(this, taskDescription); 
            } catch (Exception e) {

            }
}