我可以为android任务切换器设置不同的图标吗?

Tim*_*tch 9 icons android

我的应用程序有一个标识,我可以做黑色或白色.我指定的启动器图标是黑色的,我想保持它的颜色.但是,我的应用程序使用的是黑色主题,最近的应用程序堆栈中应用程序标题栏的颜色也是黑色.黑色标题栏上的黑色图标看起来很难看,特别是在白色文字旁边.这是一个截图,以帮助解释:丑陋的色彩组合

是否可以为启动器和任务切换器指定不同的图标?

编辑:我看到Chrome执行此操作:它将任务切换器图标更改为当前站点的图标,因此除非该API是私有的,否则我明确知道这是可能的.

MrH*_*rio 3

是的,从 API 21 开始,我们可以选择使用TaskDescriptionAPI 自定义应用程序在“最近使用的应用程序”屏幕中的表示形式。

\n\n

如果您只关心图标,则基本上可以在以下任意位置使用以下代码片段Activity

\n\n
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {\n          setTaskDescription(\n              new ActivityManager.TaskDescription(\n                  null, // Leave the default title.\n                  R.drawable.the_icon_you_want,\n                  null // Leave the default color                    \n          )  \n      }\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,您必须记住,您的应用程序在“最近使用的应用程序”屏幕上的呈现方式由TaskDescription您上次设置的决定。

\n\n

正如 Big Nerd Ranch 关于此事的精彩文章所引用的那样:

\n\n
\n

默认情况下,TaskDescription 基于任务\xe2\x80\x99s 活动堆栈底部的活动。堆积起来的其他活动不会影响样式,除非这些活动在运行时显式设置了 TaskDescription。显式设置了 TaskDescription 的最顶层活动将优先于清单中或堆栈中设置了 TaskDescriptions 的活动中指定的样式。

\n
\n\n

因此,为了获得可能的最佳结果,您需要将该代码片段放入应用程序的MainActivity方法中onCreate(..)

\n

  • 代码无法按原样编译。构造函数的第三个参数是一个 int (因此它不能为 null)。如果您希望将颜色保留为默认值,可以在此处使用二参数构造函数。https://developer.android.com/reference/android/app/ActivityManager.TaskDescription.html#ActivityManager.TaskDescription(java.lang.String,%20int) (3认同)