Android 图标上面添加提醒(一)使用Canvas绘制
在我们开发一些如通讯录、社交等应用或者应用添加新功能模块时,会考虑在对应的图标上加上未读信息的数量,或者是新功能提醒的图标,这样不占太大空间还能达到提示的目的.
之前在MMS分析部分,也有人问过我这种提醒的实现. 关于这种提醒的添加,我总结了下,有大概几种方法可以实现:
1. 在对应的布局放置TextView或者ImageView.
2. 用Canvas在原来Icon的bitmap基础上进行绘制
3. 利用开源项目ViewBadger进行添加,很方便,而且相对灵活
第一种方法只是调整下布局.这里不再讲述,直接看第二种方法:
效果图:
这里用到一个自定义的根据资源图标id获取图片的函数,很简单,代码如下:
- /**
- * 根据id获取一个图片
- * @param res
- * @param resId
- * @return
- */
- private Bitmap getResIcon(Resources res,int resId){
- Drawable icon=res.getDrawable(resId);
- if(icon instanceof BitmapDrawable){
- BitmapDrawable bd=(BitmapDrawable)icon;
- return bd.getBitmap();
- }else{
- return null;
- }
- }
获取到图标之后就要对这个图标进行处理了,要为该图标加上数量的覆盖
- /**
- * 在给定的图片的右上角加上数量
- * @param icon 给定的图片
- */
- private Bitmap generatorContactCountIcon(Bitmap icon){
- //初始化画布
- int iconSize=(int)getResources().getDimension(android.R.dimen.app_icon_size);
- Log.d(TAG, "the icon size is "+iconSize);
- Bitmap contactIcon=Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888);
- Canvas canvas=new Canvas(contactIcon);
- //拷贝图片
- Paint iconPaint=new Paint();
- iconPaint.setDither(true);//防抖动
- iconPaint.setFilterBitmap(true);//用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果
- Rect src=new Rect(0, 0, icon.getWidth(), icon.getHeight());
- Rect dst=new Rect(0, 0, iconSize, iconSize);
- canvas.drawBitmap(icon, src, dst, iconPaint);
- //启用抗锯齿和使用设备的文本字距
- Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);
- countPaint.setColor(Color.RED);
- countPaint.setTextSize(20f);
- countPaint.setTypeface(Typeface.DEFAULT_BOLD);
- canvas.drawText(String.valueOf(count), iconSize-18, 25, countPaint);
- return contactIcon;
- }
Android 图标上面添加提醒(一)使用Canvas绘制相关推荐
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
版权声明:本文为博主原创文章,未经博主允许不得转载. 上一篇讲到用canvas进行绘制得到对应最终的bitmap. 在实际应用中,我们除了给图标添加数字外,也有可能加一些红色方块之类的图标作为新功能的 ...
- android点击右上角图标调转,Android 图标右上角添加数字提醒
[MSSQL2012]CUME_DIST函数 CUME_DIST函数以某列作为基准,计算其它行相对于基准行数据的比例.差距比例,比较容易理解 先看下测试数据 DECLARE @TestData TAB ...
- Android 图标右上角添加数字提醒
方法一:使用开源项目ViewBadger,github上的地址:https://github.com/jgilfelt/android-viewbadger 效果如图所示:
- html5添加随机率,HTML5 canvas 绘制随机曲线 并实现放大功能
正在开发一个无线监控系统,要显示频率波形图,所以最近一段时间再研究HTML5 canvas 标签,本例实现了根基传经来的数据绘制曲线,并对整个图实行局部放大功能. js代码(canvas_06.js) ...
- html交互式添加线要素,HTML5 Canvas绘制交互式交叉线
JavaScript 语言: JaveScriptBabelCoffeeScript 确定 $(function() { // Console Log function cl($m) { consol ...
- java手机状态栏圆形图标,android实现状态栏添加图标的函数实例
本文实例讲述了android实现状态栏添加图标的函数.分享给大家供大家参考.具体如下: private void showNotification() { // 创建一个NotificationMan ...
- android 获取电流参数,Android编程实现添加低电流提醒功能的方法
本文实例讲述了Android编程实现添加低电流提醒功能的方法.分享给大家供大家参考,具体如下: 特殊需求,检测电流是否正常. 监听如下广播: Intent.ACTION_BATTERY_CHANGED ...
- Android Launcher 界面添加未接来电 / 未读短信条数显示
原文首发地址 Android Launcher 界面添加未接来电 / 未读短信条数显示 本文代码基于 Android 6.0(高通),原生不支持未接来电以及未读短信的图标右上角数目显示. 涉及到几个文 ...
- Android图标上显示数字
Android图标上显示数字或加上数字的功能,直到Android4.4也没有实现.所以要修改系统的应用launcher来实现该效果. 之前你可能要参考其他一些博客或资料,对launcher的架构有一个 ...
最新文章
- SAP WM初阶之TO报表LX10 - Evaluation of movements per storage type
- vscode 默认初始化_VSCode设置初始化模板
- 什么计算机保护,什么是分级保护!!
- u-boot-2011.06-rc2移植到mini2440开发板(一)
- sklearn集成学习概述
- Thinking In Java 读书笔记
- virtualBox文件共享
- GitHub 新增并上传
- VBA函数定义及说明
- 【南方者】【考证】【软考】【系统规划与管理师】论文万能模板
- echart柱状图堆列实现百分比显示
- NVME格式硬盘SSD安装WIN7蓝屏(0x000007B)解决方法
- my97DatePicker选择年、季度、月、周、日(转)
- 关于三门问题的Python代码
- 通过自定义镜像创建具有相同操作系统、应用程序和数据的百度云服务器BCC,有效提高交付效率!
- 霍尔逻辑Hoare Logic
- Excel随机任意数的加减乘除法
- java怎么声明list_Java中的ArrayList或List声明
- webpack打包之后的文件过大的解决方法
- 微信小程序 添加联系人API