目标:

实现切换APP图标功能。即不同的时间显示不同的App Icon。

准备知识:

要实现切换APP图标的功能,就需要对配置在AndroidManifest.xml中的 < activity-alias>(Activity的别名) 有所了解。

< activity-alias>
即:Activity的别名,由targetActivity属性 命名。指定的target activity与别名activity在同一应用中,并且在清单中必须放在别名之前进行声明。

<activity-alias android:enabled=["true" | "false"]android:icon="drawable resource"android:label="string resource"android:name="string"android:targetActivity="string" >. . .</activity-alias>

属性:
android:enabled
系统是否可以通过此别名实例化目标 Activity。如果可以,则设为“true”;如果不能,则设为“false”。默认值为“true”。

android:icon
通过别名呈现给用户时目标 Activity 的图标。

android:name
别名的唯一名称。该名称应类似于完全限定类名。但是,与目标 Activity 的名称不同,别名名称是任意的,它不引用实际类。

android:targetActivity
可通过别名激活的 Activity 的名称。此名称必须与清单中别名前面的 元素的 name 属性匹配。

实施步骤:

一、androidManifest文件中配置

<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
<activity-alias// 别名activtiy的名称任意,手动创建空白 MainAliasActivityandroid:name="MainAliasActivity"// 默认指定false,如果默认指定true。则应用会出现两个App Iconandroid:enabled="false"// 点击别名activity icon android:targetActivity=".MainActivity"android:icon="@mipmap/app_logo_square"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>

创建一个空白的别名activity

public class MainAliasActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);// do nothing!!!}
}

二、设置定时器实现Icon切换

实现切换Icon方法:

public void switchAppIcon(boolean isSwich){ComponentName disabletName = new ComponentName(this, MainActivity.class.getName());ComponentName enableName = new ComponentName(this, MainAliasActivity.class.getName());if(!isSwich){enableName = new ComponentName(this, MainActivity.class.getName());disabletName = new ComponentName(this, MainAliasActivity.class.getName());}this.getPackageManager().setComponentEnabledSetting(disabletName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);this.getPackageManager().setComponentEnabledSetting(enableName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);
}

设置定时器(这里使用Rxjava 也可以使用Handler、Timer等):

public class App extends Application {@Overridepublic void onCreate() {super.onCreate();// 10秒后 切换IconObservable.timer(10, TimeUnit.SECONDS).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Long>() {@Overridepublic void accept(Long aLong) throws Exception {Log.d("App","切换Icon");switchAppIcon(true);}});// 20秒后 恢复IconObservable.timer(20, TimeUnit.SECONDS).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Long>() {@Overridepublic void accept(Long aLong) throws Exception {Log.d("App","恢复Icon");switchAppIcon(false);}});}

小结:

这里只把切换app Icon简单思路串通了一下,要实现完整的切换App Icon的方法还需要考虑
通过Application#registerActivityLifecycleCallbacks方法注册了对应用内Activity生命周期的监听,通过是否有活跃状态的Activity判断应用是否进入了后台。然后再进行Icon的切换和恢复。

参考:

双11快到了,不给你的APP加上自动换图标的功能吗?
< activity-alias>
安卓-自动定时切换APP图标,节假日APP icon图标自动变化

android功能_自动切换APP图标,节假日图标自动变化相关推荐

  1. 笔记本电脑插入耳机不能自动切换播放设备,小键盘不能自动打开,蓝屏问题记录

    解决电脑奇葩问题记录 前言 插入耳机不能自动切换设备 小键盘开机不自动打开 小键盘开机不自动打开 总结 前言 博主电脑型号神舟战神K660E-i7 D2,系统是Windows 7,不同版本驱动来源于神 ...

  2. android 通知栏背景颜色跟随app导航栏背景颜色变化而变化

    原文地址为: android 通知栏背景颜色跟随app导航栏背景颜色变化而变化 通知栏(notification)背景颜色跟随app导航栏(top title)背景颜色变化而变化. 这也叫沉浸式状态栏 ...

  3. 单片机电源自动切换电路,mos双电源自动切换电路,电池与usb供电自动切换电路

    日常电器中,双电源自动切换的例子随处可见如:交流适配器和USB供电的电源切换.电池供电和USB供电的自动切换. 这些电路一般都遵守一个原则:优先选择电压高者使用. 其实最开始这个电路是在 锂电充电电路 ...

  4. 【按键精灵篇】如何做一个自动打开APP进入注册页面自动输入自己手机号

    按键精灵,虽然很早听过,但是一直没有真正使用过,所以最近有点时间也简单试一下,通过脚本自动清理APP缓存,打开百家号并自动进入注册页面输入自己的手机号. 软件清单 1. 雷电手机模拟器:https:/ ...

  5. html 图片轮播渐变,js轮播图自动切换和css做页面自动渐变

    js轮播图自动切换和css页面自动渐变 效果如下: 可以去jq官网学习:http://www.jq22.com/ 部分代码如下: *{margin: 0; padding: 0;} p{text-al ...

  6. jquery实现app开发闹钟功能_趣味闹钟APP开发,随意切换闹钟叫醒功能

    智能手机端的发展使得人们获取外界信息更加高效,然而智能手机的出现也有一定的弊端,生活中很多人常常因为浏览手机信息而选择熬夜,早起自然也就成为了一种困难,而趣味闹钟APP开发或多或少可以帮助用户解决问题 ...

  7. android自动切换暗色,根据环境光亮度自动切换,让 Android 10 的暗色主题更智能:Auto Dark Theme...

    从 iOS 13 的暗色模式到 Android 10 的暗色主题,对类似功能的系统级支持是今年的一大热点,也为我们带来了不少便利. 不过大部分围绕暗色模式或暗色主题的自动化实现都是与 时间 紧密挂钩的 ...

  8. Android之高仿京东APP首页“京东快报”自动向上滚动的广告条

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51013562 本文出自:[顾林海的博客] ##前言 上次在京东APP上 ...

  9. UnrealEngine4蓝图功能_关卡切换后的玩家出身点定位功能实现

    (文章为自己制作学习过程中的技术总结,如有不正确的理解,欢迎批评指正) 对于很多游戏都存在多个关卡,而每个关卡之间也是会有进有出,当然除去利用levelstreaming技术通过程序控制动态载入载出的 ...

最新文章

  1. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
  2. 有一个5 * 5的二维数组,保留主对角线上的元素,并使其他元素均为0,要求用函数和子函数完成
  3. python3菜鸟-Python3 迭代器与生成器
  4. 基于WASM的无侵入式全链路A/B Test实践
  5. Android开发环境搭建全程演示(jdk+eclipse+android sdk)
  6. 大厂面试官最喜欢问的面试难点
  7. paip.提升效率---提升绑定层次--form绑定取代field绑定
  8. html 图片墙效果,基于html5实现的图片墙效果
  9. python学习资源分享
  10. c语言编程图形并颜色,C语言图形编程(三、绘图函数1)
  11. python风格迁移_图像风格迁移实战(附Python实战)
  12. linux网络电视软件sopcast的安装
  13. POI操作Microsoft Office 之 操作PPT简单示例(附源码)
  14. android SDL系列讲解(十三) 播放音乐库 SDL_mixer教程
  15. SDUT—Python程序设计实验四(字符串)
  16. fiddler抓包史上最完整细致的步骤(抓包微信小程序解决无法Iphone无法上网)
  17. 怎样运用云服务器搭建传奇世界联网手游教程,linux系统部署游戏详细教程
  18. STM32实战(1):搭建模板工程
  19. CSS 文本超出溢出显示省略号...
  20. 独家专访阿里集团副总裁贾扬清:我为什么选择加入阿里巴巴?

热门文章

  1. 多模态Prompt Tuning,你到底行不行?
  2. SCI、EI论文检索,引用格式
  3. 关于人工智能不会使大脑变懒惰的议论文_人工智能的好处和风险:所有您需要知道的...
  4. 华为交换机关闭网页服务器,华为交换机的端口定时关闭方法
  5. 相较国外代码托管平台 gitlab,咱们中国自己的代码托管平台有哪些优势?
  6. 解决微信电脑版备份,手机端出现目前网络状况复杂的问题:当前网络状况复杂,请尝试使用其它网络
  7. 实验四-哈夫曼编码的MATLAB实现
  8. OVN 流表基础 -- 基于 kubeOVN (一)
  9. GaussDB T / A
  10. mysql引擎怎么选