在我们开发一些如通讯录、社交等应用或者应用添加新功能模块时,会考虑在对应的图标上加上未读信息的数量,或者是新功能提醒的图标,这样不占太大空间还能达到提示的目的.

之前在MMS分析部分,也有人问过我这种提醒的实现. 关于这种提醒的添加,我总结了下,有大概几种方法可以实现:

1. 在对应的布局放置TextView或者ImageView.

2. 用Canvas在原来Icon的bitmap基础上进行绘制

3. 利用开源项目ViewBadger进行添加,很方便,而且相对灵活

第一种方法只是调整下布局.这里不再讲述,直接看第二种方法:

效果图:

这里用到一个自定义的根据资源图标id获取图片的函数,很简单,代码如下:

[java] view plaincopy
  1. /**
  2. * 根据id获取一个图片
  3. * @param res
  4. * @param resId
  5. * @return
  6. */
  7. private Bitmap getResIcon(Resources res,int resId){
  8. Drawable icon=res.getDrawable(resId);
  9. if(icon instanceof BitmapDrawable){
  10. BitmapDrawable bd=(BitmapDrawable)icon;
  11. return bd.getBitmap();
  12. }else{
  13. return null;
  14. }
  15. }

获取到图标之后就要对这个图标进行处理了,要为该图标加上数量的覆盖

[java] view plaincopy
  1. /**
  2. * 在给定的图片的右上角加上数量
  3. * @param icon 给定的图片
  4. */
  5. private Bitmap generatorContactCountIcon(Bitmap icon){
  6. //初始化画布
  7. int iconSize=(int)getResources().getDimension(android.R.dimen.app_icon_size);
  8. Log.d(TAG, "the icon size is "+iconSize);
  9. Bitmap contactIcon=Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888);
  10. Canvas canvas=new Canvas(contactIcon);
  11. //拷贝图片
  12. Paint iconPaint=new Paint();
  13. iconPaint.setDither(true);//防抖动
  14. iconPaint.setFilterBitmap(true);//用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果
  15. Rect src=new Rect(0, 0, icon.getWidth(), icon.getHeight());
  16. Rect dst=new Rect(0, 0, iconSize, iconSize);
  17. canvas.drawBitmap(icon, src, dst, iconPaint);
  18. //启用抗锯齿和使用设备的文本字距
  19. Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);
  20. countPaint.setColor(Color.RED);
  21. countPaint.setTextSize(20f);
  22. countPaint.setTypeface(Typeface.DEFAULT_BOLD);
  23. canvas.drawText(String.valueOf(count), iconSize-18, 25, countPaint);
  24. return contactIcon;
  25. }

Android 图标上面添加提醒(一)使用Canvas绘制相关推荐

  1. Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger

    版权声明:本文为博主原创文章,未经博主允许不得转载. 上一篇讲到用canvas进行绘制得到对应最终的bitmap. 在实际应用中,我们除了给图标添加数字外,也有可能加一些红色方块之类的图标作为新功能的 ...

  2. android点击右上角图标调转,Android 图标右上角添加数字提醒

    [MSSQL2012]CUME_DIST函数 CUME_DIST函数以某列作为基准,计算其它行相对于基准行数据的比例.差距比例,比较容易理解 先看下测试数据 DECLARE @TestData TAB ...

  3. Android 图标右上角添加数字提醒

    方法一:使用开源项目ViewBadger,github上的地址:https://github.com/jgilfelt/android-viewbadger 效果如图所示:

  4. html5添加随机率,HTML5 canvas  绘制随机曲线 并实现放大功能

    正在开发一个无线监控系统,要显示频率波形图,所以最近一段时间再研究HTML5 canvas 标签,本例实现了根基传经来的数据绘制曲线,并对整个图实行局部放大功能. js代码(canvas_06.js) ...

  5. html交互式添加线要素,HTML5 Canvas绘制交互式交叉线

    JavaScript 语言: JaveScriptBabelCoffeeScript 确定 $(function() { // Console Log function cl($m) { consol ...

  6. java手机状态栏圆形图标,android实现状态栏添加图标的函数实例

    本文实例讲述了android实现状态栏添加图标的函数.分享给大家供大家参考.具体如下: private void showNotification() { // 创建一个NotificationMan ...

  7. android 获取电流参数,Android编程实现添加低电流提醒功能的方法

    本文实例讲述了Android编程实现添加低电流提醒功能的方法.分享给大家供大家参考,具体如下: 特殊需求,检测电流是否正常. 监听如下广播: Intent.ACTION_BATTERY_CHANGED ...

  8. Android Launcher 界面添加未接来电 / 未读短信条数显示

    原文首发地址 Android Launcher 界面添加未接来电 / 未读短信条数显示 本文代码基于 Android 6.0(高通),原生不支持未接来电以及未读短信的图标右上角数目显示. 涉及到几个文 ...

  9. Android图标上显示数字

    Android图标上显示数字或加上数字的功能,直到Android4.4也没有实现.所以要修改系统的应用launcher来实现该效果. 之前你可能要参考其他一些博客或资料,对launcher的架构有一个 ...

最新文章

  1. SAP WM初阶之TO报表LX10 - Evaluation of movements per storage type
  2. vscode 默认初始化_VSCode设置初始化模板
  3. 什么计算机保护,什么是分级保护!!
  4. u-boot-2011.06-rc2移植到mini2440开发板(一)
  5. sklearn集成学习概述
  6. Thinking In Java 读书笔记
  7. virtualBox文件共享
  8. GitHub 新增并上传
  9. VBA函数定义及说明
  10. 【南方者】【考证】【软考】【系统规划与管理师】论文万能模板
  11. echart柱状图堆列实现百分比显示
  12. NVME格式硬盘SSD安装WIN7蓝屏(0x000007B)解决方法
  13. my97DatePicker选择年、季度、月、周、日(转)
  14. 关于三门问题的Python代码
  15. 通过自定义镜像创建具有相同操作系统、应用程序和数据的百度云服务器BCC,有效提高交付效率!
  16. 霍尔逻辑Hoare Logic
  17. Excel随机任意数的加减乘除法
  18. java怎么声明list_Java中的ArrayList或List声明
  19. webpack打包之后的文件过大的解决方法
  20. 微信小程序 添加联系人API

热门文章

  1. 流API--流的映射
  2. 819C - RAW文件系统、集成文件系统
  3. linkhashmap原理_LinkedHashMap 用法
  4. 自定义的Spinner文字居中
  5. android 模拟器 3D 开发环境配置
  6. 安装cocos2D 2.1v 遇到的问题
  7. 《『若水新闻』客户端开发教程》——17.软件自动更新
  8. 主题:spring集成quartz,出现2次重复调用的问题
  9. 04 Ribbon介绍
  10. php mysql_affected_rows获取sql执行影响的行数