# HYAppIcon **Repository Path**: lixy/HYAppIcon ## Basic Information - **Project Name**: HYAppIcon - **Description**: 动态修改app启动图标 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-02-03 - **Last Updated**: 2026-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Android动态修改应用图标 改变启动图标 注意:如果activity-alias方式有问题 可以换成子类继承的方式创建多个Activity使用别名的包名类名即可 app以后都要保持这些图标配置,不能乱删和乱禁用,小心桌面图标被禁了导致无图标无法进入app的情况,除非主启动页直接换了包路径或类名 补充:经对比发现,android10以下手机,使用activity-alias方式在最近任务中没有图标。。。这也是市面上选择不支持Android10以下的一个因素吧,10+就有图标了 使用activity的方式任何系统版本都有图标,但是Android10以下没换完的就会有应用未安装的提示。而activity-alias方式没出现提示应用未安装的情况。 使用: 使用 的方式 android9及以下非主活动: 最近任务都无图标,换回主活动有。 继承主启动页Activity的方式没问题。就是没换完提示应用未安装。换完就好了 [![](https://jitpack.io/v/com.gitee.mahongyin/HYAppIcon.svg)](https://jitpack.io/#com.gitee.mahongyin/HYAppIcon) ```groovy maven { url 'https://jitpack.io' } //公仓 implementation 'com.gitee.mahongyin:HYAppIcon:0.1.1' ``` 清单文件配置的所有桌面图标,和默认启用的意图路径名 android:enabled="false/true" 来设置默认启用的 ```xml 清单文件配置需要换图标的别名或继承主启动页的子类 ...... ``` ```java //将所有的桌面图标意图传给HyAppIconUtils ComponentName componentName2 = new ComponentName(this, "com.mhy.hyappicon.demo.faviconA"); ComponentName componentName1 = new ComponentName(this, "com.mhy.hyappicon.demo.LaunchActivity"); List list = new ArrayList<>(); list.add(componentName2); list.add(componentName1);//默认启用的那个 HyAppIconUtils.initAllIconComponentName(list, componentName1); //设置换图标目标为2 void changeIcon(){ HyAppIconUtils.changeAppIcon(IndexActivity.this, componentName2)); } ``` 结束。 android10及以上 会立即退出app 【清栈】 android10以下会慢一些 得过一会才会退出app 【清栈】 如果需要启动时无感换图标。那么参考 [Android动态修改应用图标最佳实践 - 简书 (jianshu.com)](https://www.jianshu.com/p/8df4283701c6) 原理就是在**启动页**先跳转 中间过渡页[独立栈],让过渡页去跳转home页即可 也就是把换图标的那些代码挪到中间过渡页中 ```kotlin //中间过渡activity class TansparentActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) LogCat.i("应用换标 过渡页") ...... HyAppIconUtils.initAllIconComponentName(list, componentName1); //跳转主页 这里就会清理这个栈而不会影响启动的栈 launchMain(intent, "icon") HyAppIconUtils.changeAppIcon(IndexActivity.this, componentName2); finish() overridePendingTransition(0, 0) } } ``` ```xml 中间过渡 activity 配置 注意方向 android:screenOrientation="behind" 别写死成 android:screenOrientation="portrait" android 8.0 会崩溃 true true true shortEdges @null ``` ------ 另外还可以更换 启动图 只需再清单文件设置对应theme的android:windowBackground 例如: ```xml 在activity[-alis]里对应设置需要的主题即可 ```