关于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不行. ...
随机推荐
- Spring-----Spring整合Struts2实例
转载自:http://blog.csdn.net/hekewangzi/article/details/51713058
- 编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出。
编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出. 题目描述 编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出. 输入描述 编写程序输入一个5x5的矩阵 ...
- QF——OC数组
OC中的数组: OC中的数组和它的字符串有很多相似之处.也分为可变和不可变. NSArray:不可变数组,一经初始化,便不能再更改: NSMutableArray:可变数组,它其实是继承于NSArra ...
- php 7 正式发版
php 7 正式发版 php 在 2015年 12月 3 日 正式发布了 php7 以下是php7的新特性 性能是php5.6的2倍 显著的减少了内存的使用 抽象语法书 64位的支持 提高了异常层次 ...
- Android 监听器
Android提供很多种事件监听器,监听器主要是为了相应某个动作,可以通过监控这种动作行为,来完成我们需要的程序功能. OnItemClickListener: ...
- php测试时不出现错误信息
来源:http://blog.sina.com.cn/s/blog_6c9d65a101013vdj.html 在练习程序时,有时候写错了,在浏览器会打印出出错信息. 可我的程序始终没有出现. 我的环 ...
- OS X EI Capitan 10.11.1快速升级方法介绍
公告:本文纯粹是给国内小水管用户而写的,如果你们家网络是100M光线那么就不需要看本文了! 一句话概要本文:在本地山寨从App store服务器上下载安装包的动作! 导读:OS X EI Capita ...
- lua学习笔记1
lua中调用c的函数 #include <stdio.h> #include <string.h> #ifdef __cplusplus extern "C" ...
- C语言Printf格式
使用printf打印时发现,如果数据类型和打印使用的类型不一致,结果就是混乱的. 这是因为printf本身并不进行数据的类型转换,他只是把输入按照给定的数据格式输出,如果二者不匹配,那么由于不同数据类 ...
- 初识C(2)---从printf函数开始
继承[K&R]的传统,我们的第一个C语言程序也是“Hello, World.”. 书写C语言程序的大前提:C语言中的语法符号必须都是英文字符,即在中文输入法关闭状态下输入的字符. 例 1. H ...