原理:在Manifest文件中,使用标签为我们的启动Activity准备多个别名,拥有标签的activity指向启动Activity,每个拥有标签的Activity都可以单独设置一个icon,在程序中我们动态设置和的enabled属性来实现替换图标效果。

步骤

1. 在AndroidManifest.xml中添加标签,代码如下所示:

                                                                                                

这个标签需要注意的地方如下:

(1)android:name属性可以随意起。

(2)android:enabled属性要设为false,否则桌面会存在多个APP图标。

(3)android:icon属性设置为不同的图标。

(4)android:targetActivity属性要设为启动的Activity。

(5)添加那部分来使其作为启动的Activity。

2. 我们在布局文件中创建两个按钮,用来切换不同的图标,代码如下:

    

3. 在Java代码中切换和的使能状态,代码如下:

private void setRoundIcon() {    PackageManager packageManager = getPackageManager();    packageManager.setComponentEnabledSetting(new ComponentName(this, getPackageName() +            ".MainActivity"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager            .DONT_KILL_APP);    packageManager.setComponentEnabledSetting(new ComponentName(this, getPackageName() +            ".RoundActivity"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager            .DONT_KILL_APP);}private void setPrimitiveIcon() {    PackageManager packageManager = getPackageManager();    packageManager.setComponentEnabledSetting(new ComponentName(this, getPackageName() +            ".RoundActivity"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED,            PackageManager.DONT_KILL_APP);    packageManager.setComponentEnabledSetting(new ComponentName(this, getPackageName() +            ".MainActivity"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager            .DONT_KILL_APP);}

注意setComponentEnabledSetting()方法的第3个参数有两个值供选择:1(也就是PackageManager.DONT_KILL_APP)和0。这两种参数对应两种效果:当设为1时,当切换APP图标时,会有几秒钟的延迟,并且在延迟期间不能点击图标进入APP;当设为0时,当切换APP图标时,会立刻更换,但是应用会被强制退出并被清理掉。

 

存在的问题

1. 当启动的的enabled属性设为disabled时,Android Studio再次编译运行会出现如下错误:

需要将的enabled属性设为enabled或者将APP卸载后才能编译运行。

2. 在应用管理和应用详情页里App的图标一直是原来的,不会动态修改。

 

更多相关文章

  1. Android(安卓)如何禁止屏幕灭屏
  2. 帧动画和补间动画
  3. Android(安卓)巧用 flexboxLayout 布局
  4. 腾讯微博java(android) sdk 标签相关api详细介绍
  5. Android动画开发——Animation动画效果 .
  6. Android中的style和theme
  7. 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹
  8. Android(安卓)AppShortcuts 桌面启动图标长安弹出框 类似支付宝
  9. Android(安卓)Material Design 系列之 Toolbar 使用详解

随机推荐

  1. 关于mysql数据库误删除后的数据恢复操作
  2. 完美解决mysql启动后随即关闭的问题(ibdat
  3. 详谈mysqldump数据导出的问题
  4. 浅谈mysql密码遗忘和登陆报错的问题
  5. 解说mysql之binlog日志以及利用binlog日
  6. MySQL 5.7中的关键字与保留字详解
  7. mysql 列转行,合并字段的方法(必看)
  8. mysql列转行以及年月分组实例
  9. mysql 列转行的技巧(分享)
  10. MySQL 按指定字段自定义列表排序的实现