android开发,动态图标,Android动态加载很难?带你快速实现App图标热更新
听说支付宝推出的AR红包推出没几天就被我朝众多大神给搞了。。不能说支付宝App的“不坚挺”,只能说众大神太厉害了
~~
今天继续和大家分享Android中动态更新的内容。上篇博客中我和大家分享了如何实现Android中动态更新View的内容,从中大家也知道了如何使用DexClassLoader来动态加载Apk,以及如果通过Resource来获取外部Apk的资源。没有看的童靴点这里:
本篇博客要和大家分享的内容是如何实现动态更新App图标。这种场景想必大家都见的很多了。尤其是电商App以及现在的旅游App,例如:阿里系手淘,天猫,京东,携程旅游,途牛等等。每次在到重要节日时,你会突然发现他们的App图标变了,在过完节日后又变成了默认图标。并且是悄悄的。然后你一脸懵逼,我并没有更新App哇。。
是的,你真的没有更新App。下面我就和大家分享下如何实现动态更新App图标。
Android系统为我们提供了App可以实现多入口的功能,什么叫多入口呢?顾名思义,就是可以在桌面产生多个图标(多个launch icon),给你一种多个App的感觉,但是这多个launch icon 都指定了同一个入口,即启动的Activity界面是相同的。先来看看效果:
图飞了~~
如何实现多个入口呢?系统为我们提供了activity-alias,来看看如何使用:
在AndroidMainfest.xml配置文件中添加activiry-alias标签属性,上面可以看到比较常用的标签属性,其中targetActivity标注要对接的入口是哪个,就是要启动的Activity,我将其指向了MainActivty,MainActivity就是主入口:
其他属性很简单就不再赘述了。
注意:
1. IconOne中需要使用
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
否则, 下一次按Home退出后,按另一个icon进入就不会调用onNewIntent();
2. onNewIntent中注意setIntent否则getIntent()会是之前的intent.
3. activity-alias需要和主入口的相同。
4.activity-alias的enable在初始化时设置为false,就会被隐藏(即隐藏入口),如果设置为true,初始化时就会产生两个图标(即默认Activity和activity-alias)。
4.activity-alias的name是不能改的,如果当前版本的是second,下版本改成second_laodongjie,就会导致系统找second找不到,导致桌面无图标,应用打不开.
ok,实现了如何开启多个入口,那么我们就有了一个思路,换图标,只需要将默认的隐藏掉,然后显示新的activity-alias的就可以了哇。如何控制activity-alias的显示隐藏呢?大家要明白,activity就是一个Component组件哇,没错,就是PackageManager。我们可以利用setComponentEnabledSetting方法来开启和关闭组件,此时就可以动态控制桌面上图标的显示和隐藏了。
来看下核心代码:
/***初始化组件*/private voidinitComponent() {mainComponent=getComponentName();laodongjieComponent=newComponentName(getBaseContext(),"com.example.song.wave.SecondActivity");}/***开启*/private voidsetComponentEnable(ComponentNamecomponentEnable) {mPm.setComponentEnabledSetting(componentEnable,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);}/***关闭*/private voidsetComponentDisenable(ComponentNamecomponentEnable) {mPm.setComponentEnabledSetting(componentEnable,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);} 主要原理就是通过PackManager的flag来控制componentName的显示和隐藏。
此时有童靴可能会问?这怎么能动态的实现呢?没错,一般动态实现我们的思路都是在服务端保存一个图标,然后下载到客户端,此时客户端可以重新设置加载即可。
ok,今天的内容就到这里了,最后依旧奉上源码
android开发,动态图标,Android动态加载很难?带你快速实现App图标热更新相关推荐
- android图片传输三方框架,Android开发三种第三方图片加载的框架
最近在项目中用到了大量图片加载,第三方优秀框架还不错,下面介绍三款榜首的框架用法和问题,做一个记录. 现在项目使用的是Android Studio开发的,现在也没有多少人使用Eclipse了吧. 一. ...
- Android开发要达到阿里P7水平,很难吗,Android高级工程师必备知识
举个例子: 对于OOM,需要知道有哪些优化工具可以使用(Lint.MAT等),如何检测OOM,以及垃圾回收机制等深层次的原理.对于性能优化来说,如何减少apk体积.资源动态加载等都是必会的.以下是性能 ...
- Android:ViewPager详解(异步网络加载图片,带图片缓存,并带导航小圆点)
android 应用中,如欢迎指引页面, 和图片轮播功能, 或者更多的内容在一页显示不了,要分成多个页面,这时候viewpager是很好用的. 首先看下效果: 下面是一个例子,带异步网络加载图片,并带 ...
- android 皮肤包换肤之Resources加载(一)
Android 换肤之资源(Resources)加载(一) 本系列计划3篇: Android 换肤之资源(Resources)加载(一) - 本篇 setContentView() / LayoutI ...
- Android下拉刷新上拉加载控件,对所有View通用!
前面写过一篇关于下拉刷新控件的博客下拉刷新控件终结者:PullToRefreshLayout,后来看到好多人还有上拉加载更多的需求,于是就在前面下拉刷新控件的基础上进行了改进,加了上拉加载的功能.不仅 ...
- Android开源框架集合分享-图像加载
关于网络加载已经写完了,今天来给大家分享一下关于图像加载的知识,在开发中除了请求数据怎么显示之外,剩下的 最大的需求应该就在图像的显示上了,一开始的话都是直接加载,等到写完之后发现内存溢出,然后开始优 ...
- android 自定义加载动画效果,Android自定义View实现loading动画加载效果
项目开发中对Loading的处理是比较常见的,安卓系统提供的不太美观,引入第三发又太麻烦,这时候自己定义View来实现这个效果,并且进行封装抽取给项目提供统一的loading样式是最好的解决方式了. ...
- 软件库Library之静态库\动态库和静态加载\动态加载
软件库Library之静态库\动态库和静态加载\动态加载 动态库之导入库 https://blog.csdn.net/wallaceli1981/article/details/5740718 * 动 ...
- Android重点笔记,安卓listview 懒加载的实现笔记
1.实现目的与用途 使用懒加载可降低单次访问后台的所获取的数据量,从而提高获取数据的速度,减少流量使用,加快UI界面的响应,提高用户体验度. 2.实现思路 两种实现思路: 1.先设定listview每 ...
- 从源码分析Android的Glide库的图片加载流程及特点
转载:http://m.aspku.com/view-141093.html 这篇文章主要介绍了从源码分析Android的Glide库的图片加载流程及特点,Glide库是Android下一款人气很高的 ...
最新文章
- 智能合约语言Solidity 类型介绍
- 刘铁岩谈机器学习:随波逐流的太多,我们需要反思
- 两阶段提交(Two-Phase Commit)
- 复杂查询练习_数据分析之路——复杂查询(4)
- 使用Go语言从零编写PoS区块链
- jqGrid 常用方法
- Ray.tune可视化调整超参数Tensorflow 2.0
- 网络操作系统第1章习题
- Tachyou alluxio初识
- delphi idtcpclient和idtcpserver的心跳包
- postman支持socket吗_你必须知道postman和Jmeter做接口测试区别
- 冒泡排序法C语言代码
- 《空间谱估计理论与算法》学习笔记005-信号源数估计
- ClientHeight
- 基于遥感解译与GIS技术环境影响评价图件制作(最新导则)
- Win7去掉/恢复快捷方式箭头
- 湖北专升本MySQL复习(MySQL数据库实用教程)——MySQL数据表的操作
- Unity 3D委托entrust
- html5页面弹窗,H5页面怎么设置弹窗
- alt tab无法切换窗口
热门文章
- 在Ubuntu 8.10 中安装使用新一代输入法ibus Deb包下载_Ubuntu,Linux,ibus输入法,拼音,五笔,搜狗
- java计算机毕业设计四六级在线考试系统源码+系统+数据库+lw文档+mybatis+运行部署
- 微大夫感冒舒缓仪亮相“2018健康陕西发展大会”回顾
- 【总结】浪潮杯第七届ACM山东省省赛山师场总结
- html5水墨效果,html5 canvas水墨风格的云雾动画特效
- keyshot渲染玻璃打光_keyshot打光技巧,教你如何制作汽车自由式布光效果
- k8s免fq下载镜像
- html5中国产业联盟,中软国际联合发起HTML5+联盟为产业生态服务
- SQL Server安装中错误该性能计数器注册表配置单元已损坏。若要继续,必须修复该性能计数器注册表配置单元的解决
- python查看mac的usb信息_Python实现的读取电脑硬件信息功能示例