1.图标设置

app图标一般都是设置在Android manifest.xml文件里application的icon属性里,如下:

Android manifest.xml:

<application

android:icon="mipmap/ic_launcher"

……>

淘宝、微博都有默认图标,但是到了重大节日或者有重要活动的时候,它们的图标会相应的发生改变,这是怎么做到的呢?

2.动态改变图标

实现的关键是使用activity-alias,配置多个相同activity。

实现流程为:在Manifest文件中使用activity-alias标签准备多个Activity入口,每个activity都指向入口Activity,并且为每个拥有activity-alias标签的activity设置单独的icon和应用名,最后调用SystemService 服务kill掉launcher,并执行launcher的重启操作。

①首先,修改AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.demo.test">

<!-- 权限-->

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

<application

android:allowBackup="true"

android:icon="@mipmap/default_logo"

android:label="@string/app_name"

android:roundIcon="@mipmap/default_logo"

……>

...

<!-- 默认图标-->

<activity-alias

android:name="com.demo.test.default"

android:targetActivity=".MainActivity"

android:label="@string/app_name"

android:enabled="false"

android:icon="@mipmap/default_logo"

android:exported="true">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity-alias>

<!-- 活动图标-->

<activity-alias

android:name="com.demo.test.special"

android:targetActivity=".MainActivity"

android:label="@string/special"

android:enabled="false"

android:icon="@mipmap/special_logo"

android:exported="true">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity-alias>

...

</application>

</manifest>

其中涉及到的属性:

android:name:注册的组件名字,启动组件的名称。

android:enabled:是否启用这个组件,即是否显示这个入口。

android:icon:图标

android:label:名称

android:targetActivity:默认的activity没有这个属性,指定目标activity,与默认的activity中的name属性是一样的,需要有相应的java类文件。

注:

(1)activity-alias需要在activity下面,enabled为false,否则桌面会有两个图标

(2)activity-alias下的name随意,但targetActivity需要是上面activity的name

(3)在这配置要换的icon和label

(4)android:exported都需要为true。默认为true

②在MainActivity触发Logo图标更换逻辑:

private void changeIcon(String name){

PackageManager pm = getPackageManager();

pm.setComponentEnabledSetting( getComponentName(),PackageManager.COMPO NENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

pm.setComponentEnabledSetting(new ComponentName(this, name), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

restart(pm);

}

注意changeIcon()方法中的name字符串需要和AndroidManifest.xml文件中的<activity-alias>的name相对应。

Android 动态更换app图标相关推荐

  1. Android动态更换APP图标及名称

    前言 本来想研究一加手机上的天气APP,会随着每天的天气.温度不同动态的改变APP的图标是如何实现的,但始终没有想出和查阅到相关方法,毕竟是人家自己的系统APP.但是也找到了一种能动态改变图标的方法, ...

  2. Unity动态更换APP图标及名称

    Unity动态更换APP图标及名称 参考链接:https://blog.csdn.net/fu908323236/article/details/78813136 本文环境:(本文为安卓版) Unit ...

  3. (0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标

    iOS新特性: iOS10.3教你如何动态更换APP图标? 1.iOS 10.3 开放了更换 app 图标的 API,核心方法是下面这个: [[UIApplication sharedApplicat ...

  4. android+动态更改app图标,Android开发:如何动态更换APP图标

    在Android开发中,通常会有这样的需求,逢年过节UI的小伙伴们都会做出节日或活动相关的APP图标让我们更换,可是每次更换都要发版实现.那么,如何在不发版的情况下动态地更换我们的图标呢?本篇文章就来 ...

  5. Android如何动态更换桌面图标(巨坑)

    转载https://blog.csdn.net/pangjl1982/article/details/83308512 1.Android如何动态更换桌面图标 1.1使用场景       APP,在中 ...

  6. 从微博个性图标里学Android动态更换

    一.背景 前不久,微博官方发布了一项新功能,微博年费会员可以在App设置中动态更换微博的显示图标样式,但由于部分手机存在系统差异,会导致该功能不可用,微博方面后续还会对该功能进行进一步优化. 我们可以 ...

  7. Android之动态更换桌面图标

    Android之动态更换桌面图标 文章链接:http://blog.csdn.net/qq_16628781/article/details/69054325 知识点 动态更换APP 桌面icon的引 ...

  8. (4.6.25)Android动态更换应用Icon之玩转桌面图标

    一原理解析 1 原理1activity-alias 2 原理2PMsetComponentEnabledSetting 二动态更换桌面icon 三远程控制图标的实现方式 四多入口实现方式 快捷方式入口 ...

  9. 【Android Studio安装部署系列】十八、Android studio更换APP应用图标

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio新建项目后会有一个默认图标,那么如何更换图标呢? 替换图标 这个方案不建议直接在已有项目上更换图标,建议 ...

  10. iphone换android app图标,iPhone更换App图标图文教程

    想让自己的iPhone变得更加个性化?让我们从替换App图标开始,将官方下载的App应用图标换成我们自己喜欢的个性时尚的图片绝对是个不错的主意,下面PC6小编给大家放几张效果图,顺便带来iOS系统越狱 ...

最新文章

  1. SCDPM2012功能测试(4)—配置通知
  2. python乘法口诀表-用python打印99乘法口诀表
  3. 我常用的python函数(part1)--内置函数isinstance
  4. 威海二职工业机器人专业_工业机器人专业就业前景-山东省好的中专学校
  5. 探索比特币源码1-运行 Bitcoin Core Node
  6. 作者:刘岩(1982-),男,泰康保险集团股份有限公司数据信息中心高级工程师、高级主管,中国计算机学会会员...
  7. web元件库、axure元件库、通用元件库、常用web组件、常用表单、框架、数据表单、导航栏、边框、图标、列表、日期时间选择器、评分组件、穿梭框、输入框、步骤条、图表组件、数据可视化、后台模板、时间轴
  8. wacom win10 未连接任何设备 驱动的问题 解决影拓3手绘板等老设备驱动无法在win10使用的问题
  9. 打印机扫描计算机远程扫描仪,怎么用打印机扫描文件-彩色网络打印机扫描设置FTP版...
  10. C语言实现输出九九乘法表
  11. 【bzoj4972】小Q的方格纸 前缀和
  12. iOS xcode 8 注释快捷键
  13. 经纬创投中国项目分类清单
  14. python24点4张扑克_Python实现扑克24点 ,从此我就没输过。
  15. SpringBoot系列之(二):1.使用SpringBoot
  16. 7-15(查找) 航空公司VIP客户查询(25 分)
  17. 多节点Linux部署
  18. 2019大疆秋招面经(后台开发录用)
  19. 观测风如何变成10m风
  20. 基于MaxEnt模型的云南红豆杉潜在适宜分布预测

热门文章

  1. Java开源大全 网站
  2. 基于SSD1306的OLED的驱动学习(二):SSD1306的寻址方式
  3. windows 定时重启Tomcat服务
  4. C++ 求指定函数的定积分问题
  5. Excel VBA生成SQL建表语句
  6. iCode:开源的在线 html/css/js 编辑器
  7. 软件测试管理—如何写好软件测试计划书
  8. 天正如何转为t3_[转载]天正文件转T3格式CAD图
  9. LTE网络架构简化了
  10. 华为交换机初始化_华为交换机的初始配置