`
阿尔萨斯
  • 浏览: 4203243 次
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

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

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

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

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

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

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

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

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

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

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

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

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的...

    Google Android SDK 开发范例大全01

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

    Google Android SDK 开发范例大全02

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

    Google+Android+SDK开发范例大全

    1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!...

    Google Android sdk 开发范例大全 部分章节代码

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

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

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

Global site tag (gtag.js) - Google Analytics