You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修改Android后台运行应用视图中的图标

修改Android后台运行(最近任务)视图图标指南

这个问题我之前帮不少开发者解决过,其实后台任务视图的图标逻辑比你想的要清晰,咱们一步步来搞定它:

先搞懂图标来源

后台运行的最近任务视图里的图标,通常优先用你自适应启动图标的前景层,但如果你的配置有遗漏,系统就会 fallback 到默认的系统图标(就是你看到的蓝色/绿色那种),或者错误引用了其他资源。

方法1:先确保自适应启动图标配置正确

这是最常见的问题根源,先检查这几步:

  • 打开res/mipmap-anydpi-v26目录,看看ic_launcher.xmlic_launcher_round.xml这两个文件,确认foreground属性指向的是你自定义的图标资源,background是你设置的背景色或图形,别写错资源ID。
  • 再去AndroidManifest.xml里的<application>标签,确认已经正确引用了这两个图标:
    <application
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round"
        <!-- 其他属性 -->
        >
    
    配置完后,清理应用缓存、重启应用试试,很多时候这一步就能解决问题。

方法2:给最近任务单独设置专属图标(可选)

如果你想让最近任务的图标和桌面启动图标不一样,可以用两种方式设置:

  • 静态配置(Manifest里搞定):给你的主Activity单独加android:icon属性,覆盖应用级别的图标:
    <activity
        android:name=".MainActivity"
        android:icon="@drawable/your_custom_task_icon"
        <!-- 其他属性 -->
        >
    
  • 动态配置(代码里灵活调整):在Activity的onCreate()或者合适的生命周期方法里,用代码动态设置,比如Java写法:
    TaskDescription taskDesc = new TaskDescription(
        getString(R.string.app_name), // 任务栏显示的应用名称
        BitmapFactory.decodeResource(getResources(), R.drawable.your_custom_task_icon), // 自定义任务图标
        getResources().getColor(R.color.task_bar_color) // 任务栏背景色
    );
    setTaskDescription(taskDesc);
    
    Kotlin版本只需要把代码转成对应的语法就行,很简单。

方法3:检查通知图标配置(容易被忽略的点)

有些系统会把通知图标作为最近任务图标的 fallback,所以如果上面两步都没解决,就检查下通知图标:

  • 准备一个透明背景的通知图标(系统会自动处理背景色,别带复杂背景),放在res/drawablemipmap目录里。
  • AndroidManifest.xml<application>标签里添加配置:
    <application
        <!-- 其他属性 -->
        android:notificationIcon="@drawable/ic_notification"
        android:notificationColor="@color/your_notification_color">
    

最后几个排查小技巧

  • 要是还是没生效,先清理应用的缓存和数据,然后重启手机(有时候系统资源缓存会搞事情)。
  • 如果你用的是定制ROM(比如小米、华为的系统),看看是不是第三方启动器或者系统主题覆盖了图标设置,暂时切换回默认主题试试。
  • 确认你的图标资源符合Android规范:自适应图标的前景层要留足够的内边距,避免被系统裁剪,导致显示异常。

内容的提问来源于stack exchange,提问作者Tom

火山引擎 最新活动