能否不修改Android应用启动快捷方式,动态修改各Activity的窗口标题与图标?
可以实现!无需修改桌面快捷方式,单独设置/动态修改窗口标题&图标
当然可以做到!完全不用改动桌面快捷方式的图标和应用名称,就能给每个Activity单独配置甚至动态修改系统窗口(也就是你截图里多任务界面、任务栏显示的那个标题和图标,和ActionBar无关)的标识,具体方法如下:
一、静态配置:给单个Activity单独设置
在AndroidManifest.xml里,你可以给每个<activity>标签单独指定android:label和android:icon属性,而桌面快捷方式会沿用<application>标签下的android:icon和android:label,两者互不影响:
<!-- 全局应用配置,控制桌面快捷方式的图标和名称 --> <application android:icon="@mipmap/ic_launcher" android:label="我的应用"> <!-- 第一个Activity,窗口用自己的标题和图标 --> <activity android:name=".MainActivity" android:label="首页窗口" android:icon="@mipmap/ic_main_window"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 第二个Activity,窗口用另一套标题和图标 --> <activity android:name=".SettingsActivity" android:label="设置窗口" android:icon="@mipmap/ic_settings_window" /> </application>
这样设置后,桌面快捷方式还是显示“我的应用”和ic_launcher图标,但打开SettingsActivity时,多任务界面里的窗口会显示“设置窗口”和ic_settings_window图标。
二、动态修改:运行时调整窗口标识
如果需要在代码里动态改变窗口的标题或图标,也完全可行:
1. 动态修改窗口标题
直接在Activity的代码里调用setTitle()方法即可,支持字符串资源或直接传入文本:
// 直接设置文本标题 setTitle("动态更新的窗口标题"); // 或者使用字符串资源 setTitle(R.string.dynamic_window_title);
2. 动态修改窗口图标(及标题)
要修改窗口的图标,需要使用ActivityManager.TaskDescription类,它可以一次性配置窗口的标题、图标和任务栏颜色,调用setTaskDescription()生效:
import android.app.ActivityManager; import android.graphics.BitmapFactory; // 在Activity的onCreate或任意需要修改的时机调用 ActivityManager.TaskDescription taskDesc = new ActivityManager.TaskDescription( "动态窗口标题", // 可选:同时修改标题 BitmapFactory.decodeResource(getResources(), R.mipmap.ic_dynamic_icon), // 窗口图标 getResources().getColor(R.color.taskbar_color) // 可选:任务栏背景色,适配部分系统 ); setTaskDescription(taskDesc);
关键说明
- 每个Activity完全可以独立设置:不管是静态配置还是动态修改,都是针对单个Activity生效的,不同Activity的窗口标识可以完全不同。
- 不会影响桌面快捷方式:所有窗口层面的修改都只作用于系统多任务/任务栏的显示,桌面快捷方式始终沿用
<application>标签的配置。
内容的提问来源于stack exchange,提问作者Ωmega
相关产品推荐
相关产品推荐

