Android 图标上面添加提醒
来源:互联网 发布:中国移动的4g网络制式 编辑:程序博客网 时间:2024/05/02 18:50
(一)使用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;
- }
上一篇讲到用canvas进行绘制得到对应最终的bitmap. 在实际应用中,我们除了给图标添加数字外,也有可能加一些红色方块之类的图标作为新功能的提醒.
那么有没有什么方法,很方便地给图标添加提醒icon或者数字呢?
有的,还是得借助于开源项目ViewBadger,这个是github上的地址:
https://github.com/jgilfelt/android-viewbadger
还是先看下效果图:
其用法非常简单:
首先是添加数字:
- BadgeView badgeView = new BadgeView(MainActivity.this, iv1);
- badgeView.setText("5");
- badgeView.show();
然后是添加文字:
- BadgeView badgeView = new BadgeView(MainActivity.this, iv2);
- badgeView.setText("新消息");
- badgeView.setTextSize(8.5f);
- badgeView.setTextColor(Color.DKGRAY);
- badgeView.show();
最后是添加特定图标,只需对应drawable的id即可
- BadgeView badgeView2 = new BadgeView(MainActivity.this, iv3);
- badgeView2.setBackgroundResource(R.drawable.noread);
- badgeView2.show();
隐藏/去掉提醒图标或者数字(同正常View隐藏的方法);
- badgeView.setVisibility(View.GONE);
怎么样,只要是View对象即可添加提醒图标或者数字,是不是很方便,.赶紧用一下吧.
源码下载地址:
http://download.csdn.net/detail/huluhong/8021481
0 0
- Android 图标上面添加提醒
- Android 图标上面添加提醒
- Android 图标上面添加提醒(一)使用Canvas绘制
- Android 图标上面添加提醒(一)使用Canvas绘制
- Android 图标上面添加提醒(一)使用Canvas绘制
- Android 图标上面添加提醒(一)使用Canvas绘制
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
- Android 图标上面添加提醒使用开源UI类库 Viewbadger
- Android 图标上面添加提醒使用开源UI类库 Viewbadger
- Android 图标上面添加提醒 使用开源UI类库 Viewbadger
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
- Android 图标右上角添加数字提醒
- android控件上面实现提醒信息
- android控件上面实现提醒信息
- 导航栏图标上添加 提醒
- 【代码实现】PHP导入Excel和导出数据为Excel文件
- arcgis Flex Map控件
- iOS block的用法
- 图的割点、桥与双连通分支
- python中的map、filter、reduce函数
- Android 图标上面添加提醒
- 写给还在路上的人-java学习阶段
- CSS样式覆盖规则
- memset函数详细说明
- No such file or directory (/Users/appleapple/Library/Developer/Xcode/Derived
- 使用AsyncHttpClient下载文件到SD卡上
- hook sys_getdents64隐藏文件
- LeetCode: Reverse Linked List II
- PHP PDO函数库详解