关于Android Launcher图标上面动态改变数字的实现
由于项目需要使用到类似小米应用商店的图标数字提示功能,谷歌百度了许多文章都没看到有真正意义上的实现(没有在国外网站上搜索),有实现在APP内部的一个ImageView上面更新数字的,当然这种太简单无非我们想要的,也要通过快捷方式更新的,这感觉也有点鸡肋,最接近真正意义上实现的是写一个自己的Home,然后在Home里面实现更新图标的数量提示,但是也不靠谱,为了一个APP的数量更新而去写一个HOME,并且别人也不会安装你这个HOME的。
下面贴上接近真正意义上实现的HOME部分代码,虽然没有满足需求,但是这种想法可能也是谷歌的HOME的内部实现了(谷歌HOME中的短信数量提示等,像我们平时看到的图标有数量提示的都是在别人的HOME中早就写了类似功能了的,例如小米中的应用商店,三星HOME中的邮件、短信)。
效果图:

首先要有个activity能成为Home,所以它的intent filter配置如下
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
这样按home键它就能出现了,

第二个是系统自带的home
这个activity非常简单,用一个gridview列出系统中所有的launcher,gridview的adapter的getview方法中,对特定的launcher进行处理,显示右上角那个红字
列出所有的launcher代码如下
PackageManager manager = getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List<ResolveInfo> apps = manager.queryIntentActivities(
mainIntent, 0);
ResolveInfo类loadLabel(manager)可以得到app的名字,info.loadIcon(manager)可以得到app的图标,
info.activityInfo.packageName可以得到app的包名.我就是根据app的包名,在adapter的getView方法中为特定的app特殊处理.
顺便吐槽下android的文档,manager.queryIntentActivities的第二个参数,说的太含糊其辞了.我也不清楚这里用
个0到底啥意思.
在这个自定义的home app中,可以放一个BroadcastReceiver,接收特定的消息后,更新gridview
比如我这里在每次收到短信后,就让短信那个app的数字加1,然后调用adapter的notifyDataSetChanged方法.
这样telnet到模拟器上,使用sms send 10086 content命令,就可以使那个数字递增,达到动态更新的效果
当然了,要完成一个完美的Home application,还有很多很多工作要做......
实现内容转自:http://www.myexception.cn/android/756559.html
关于Android Launcher图标上面动态改变数字的实现的更多相关文章
- Android TabHost 动态修改图标或者动态改变标题
那时客户需要实现在TabHost标题上动态显示从数据库获取的个数.起初这样思考的,从数据库 获取个数是非常简单,但是要把获取的个数显示在TabHost标题,思前想后,想用Handler来异步实现消息传 ...
- 动态改变actionbar上menu的图标
工作中遇到了一个需求是,在滚动的时候让actionbar上的图标进行变色.实现后在这里总结下思路. 一.先在主题中定义好Actionbar的style <style name="App ...
- Android 动态改变高度以及计算长度的EditText
前段时间项目需求,需要做一个有限制长度的输入框并动态显示剩余文字,同时也要动态改变EditText的高度来增加用户体验.现整理出来与大家分享. 先来看看效果图 看了效果就分享一下布局 <Rela ...
- 带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变
带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变 转 https://blog.csdn.net/qq_30993595/article/details/78915115 近期有 ...
- 【Android多屏适配】动态改变Listview item高度
在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...
- android 动态改变listview的内容
本文模拟:点击一个按钮,为已有的listview添加一行数据 <?xml version="1.0" encoding="utf-8"?> < ...
- 【转】Android动态改变对 onCreateDialog话框值 -- 不错不错!!!
原文网址:http://www.111cn.net/sj/android/46484.htm 使用方法是这样的,Activity.showDialog()激发Activity.onCreateDial ...
- 我的Android进阶之旅------>关于使用Android Studio替换App的launcher图标之后仍然显示默认的ic_launcher图标的解决方法
前言 最近做了一个App,之前开发该App的时候一直以来都是默认的launcher图标启动的, 今天美工换了一个App的launcher 图标,因此在Android Studio中将默认的lanche ...
- Android中动态改变控件的大小的一种方法
在Android中有时候我们需要动态改变控件的大小.有几种办法可以实现 一是在onMeasure中修改尺寸,二是在onLayout中修改位置和尺寸.这个是可以进行位置修改的,onMeasure不行. ...
随机推荐
- api (二) 创建控件 (转)
在Win32 SDK环境下,怎么来创建常用的那些基本控件呢?我们知道如果用MFC,简单的拖放即可完成大多数控件的创建,但是我们既然是用Windows SDK API编程,当然是从根上解决这个问题,实际 ...
- jQuery on()方法绑定动态元素的点击事件无效
之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...
- css3实现三角形,聊天背景气泡,心形等形状
1.聊天背景气泡: css代码如下: #talkbubble {width: 120px;margin:auto; background: red; position: relative; -moz- ...
- Core开发-MVC 使用dotnet 命令创建Controller和View
NET Core开发-MVC 使用dotnet 命令创建Controller和View 使用dotnet 命令在ASP.NET Core MVC 中创建Controller和View,之前讲解过使 ...
- Oracle系列:记录Record
Oracle系列:记录Record 分类: [Oracle] (15) 版权声明:本文为博主原创文章,未经博主允许不得转载. Oracle系列:记录(Record) 一,什么是记录(Record) ...
- arcEngine添加标注(上)
arcEngine添加标注有3个技术点:1,获得图层的属性字段:2,初始化符号显示控件:3,添加标注. 获得图层的属性字段: //每个图层都是一个表的图形化显示,ILayer跟ITale可以互相转 ...
- DRAM与NAND Flash产业六大趋势预测分析
集邦科技(TrendForce)旗下的分析部门DRAMeXchange的研究,针对对DRAM与NANDFlash产业的长久观察下,提出了对2012-2015年间产业发展的六大趋势预测: 趋势一 ...
- MyBatis 最常见错误,启动时控制台无限输出日志
你是否遇到过下面的情况,控制台无限的输出下面的日志: Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImp ...
- rsyslog 配置详解
格式:: 日志设备(类型).(连接符号)日志级别 日志处理方式(action) 日志设备(可以理解为日志类型): ------------------------ auth –pam产生的日志 aut ...
- equal_range用法
equal_range是C++ STL中的一种二分查找的算法,试图在已排序的[first,last)中寻找value,它返回一对迭代器i和j,其中i是在不破坏次序的前提下,value可插入的第一个位置 ...