`
844604778
  • 浏览: 550898 次
文章分类
社区版块
存档分类
最新评论

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;  
        }  

如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456

分享到:
评论

相关推荐

    绘制android图标左上角小三角形

    用canvas绘制imageview左上角的小三角形,并可以加入文字

    Android基于Canvas,自定义View实现的简单画图工具

    1、实现了画直线、矩形、圆形、手绘线。 2、实现了橡皮擦功能,对图上的线段可以擦除。 3、画完的图形可以保存为jpg格式的图片

    android开发揭秘PDF

    2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 ...

    SmileyRating:SmileyRating是适用于Android的简单评分栏。 它显示动画笑脸作为评分图标

    完全使用android canvas绘制 灵感来自 演示版 积分 将SmileyRating集成到项目中非常简单。 步骤1: 将此依赖项添加到您应用程序文件夹中项目的build.gradle文件中 compile ' ...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    Android应用开发揭秘pdf高清版

     国内第一本基于Android 2.0的经典著作,5大专业社区联袂推荐,权威性毋庸置疑!《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络...

    《Android应用开发揭秘》源码

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Android 给应用程序的icon添加未读消息个数提示(红圈内数字)

    最近在做一个可以查看未读消息的功能,需要在界面中的Tab页的标签icon的右上角添加一个未读消息提示的功能。 先上个效果图出来,比较直观明白需求: 思路上似乎有两种:  1. 直接把底图和红圆圈的图片用相对布局...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK开发范例大全的目录

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 ...

    Google Android SDK 开发范例大全01

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK 开发范例大全02

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

Global site tag (gtag.js) - Google Analytics