最近在做一个可以查看未读消息的功能,需要在界面中的Tab页的标签icon的右上角添加一个未读消息提示的功能。

先上个效果图出来,比较直观明白需求:
思路上似乎有两种:
1. 直接把底图和红圆圈的图片用相对布局进行排列,在代码中动态更改红圆中的TextView的数字,并且识别一下各种情况下红圆的显示或者隐藏。这种方法比较直观。
2. 采用canvas画出圆和数字。
由于项目采用的是Tab页的形式,其中的RadioButton不适合采用相对布局。故我采用了第二种方式。将绘制的过程写成了工具方法。在需要的时候调用。便于以后的技术迁移。
直接上代码:
/**
* 绘制图标右上角的未读消息数量显示
*
* @param context
* 上下文
* @param icon
* 需要被添加的icon的资源ID
* @param news
* 未读的消息数量
* @return drawable
*/
@SuppressWarnings("unused")
public static Drawable displayNewsNumber(Context context, int icon, int news) {
// 初始化画布
int iconSize = (int) context.getResources().getDimension(
android.R.dimen.app_icon_size);
// Bitmap contactIcon = Bitmap.createBitmap(iconSize, iconSize,
// Config.ARGB_8888);
Bitmap iconBitmap = BitmapFactory.decodeResource(
context.getResources(), icon);
Canvas canvas = new Canvas(iconBitmap);
// 拷贝图片
Paint iconPaint = new Paint();
iconPaint.setDither(true);// 防抖动
iconPaint.setFilterBitmap(true);// 用来对Bitmap进行滤波处理
Rect src = new Rect(0, 0, iconBitmap.getWidth(), iconBitmap.getHeight());
Rect dst = new Rect(0, 0, iconBitmap.getWidth(), iconBitmap.getHeight());
canvas.drawBitmap(iconBitmap, src, dst, iconPaint);
// 启用抗锯齿和使用设备的文本字距
Paint countPaint = new Paint(Paint.ANTI_ALIAS_FLAG
| Paint.DEV_KERN_TEXT_FLAG);
countPaint.setColor(Color.RED);
canvas.drawCircle(iconSize - 13, 20, 10, countPaint);
Paint textPaint = new Paint();
textPaint.setColor(Color.WHITE);
// textPaint.setTypeface(Typeface.DEFAULT_BOLD);
textPaint.setTextSize(19f);
canvas.drawText(String.valueOf(news), iconSize - 18, 27, textPaint);
return new BitmapDrawable(iconBitmap);
}
调用语句:
if (count > 0) {//显示右上角未读消息提示
Drawable mineDrawable = BitmapUtil.displayNewsNumber(this,
R.drawable.icon_mine, count);
mineButton.setCompoundDrawablesWithIntrinsicBounds(null, null,
null, mineDrawable);//这里就是设置背景,自行发挥。
} else {//隐藏
Drawable defaultDrawable = getResources().getDrawable(
R.drawable.icon_mine);
mineButton.setCompoundDrawablesWithIntrinsicBounds(null, null,
null, defaultDrawable);
}
注:
1.count是未读消息的数量。
2.setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom)可以在上、下、左、右设置图标,如果不想在某个地方显示,则设置为null。图标的宽高将会设置为固有宽高,既自动通过getIntrinsicWidth和getIntrinsicHeight获取。该方法是和在xml中设置 Android:drawableTop="@drawable/icon_mine"的效果一样。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# android
# icon未读数量
# 未读消息数字
# android图标未读消息
# Android 未读消息的红点显示
# Android贝塞尔曲线初步学习第二课 仿QQ未读消息气泡拖拽黏连效果
# Android仿微信底部菜单栏功能显示未读消息数量
# Android仿QQ滑动弹出菜单标记已读、未读消息
# Android 桌面图标右上角显示未读消息数字
# Android仿QQ未读消息--红点拖拽删除【源代码】
# 设置为
# 的是
# 将会
# 采用了
# 做一个
# 不适合
# 有两种
# 上个
# 在上
# 画出
# 第二种
# 可以查看
# 情况下
# 写成了
# 抗锯齿
# 这种方法
# 防抖动
# 在某个
# int
# Context
相关文章:
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
建站之星logo尺寸如何设置最合适?
如何在搬瓦工VPS快速搭建网站?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
,想在网上投简历,哪几个网站比较好?
手机网站制作与建设方案,手机网站如何建设?
动图在线制作网站有哪些,滑动动图图集怎么做?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
,制作一个手机app网站要多少钱?
如何撰写建站申请书?关键要点有哪些?
开封网站制作公司,网络用语开封是什么意思?
如何通过FTP空间快速搭建安全高效网站?
如何通过虚拟主机空间快速建站?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站之星云端配置指南:模板选择与SEO优化一键生成
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
宝塔面板如何快速创建新站点?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
如何通过万网虚拟主机快速搭建网站?
如何通过山东自助建站平台快速注册域名?
建站之星如何修改网站生成路径?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何在新浪SAE免费搭建个人博客?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
怀化网站制作公司,怀化新生儿上户网上办理流程?
北京制作网站的公司,北京铁路集团官方网站?
智能起名网站制作软件有哪些,制作logo的软件?
如何快速搭建虚拟主机网站?新手必看指南
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
建站之星如何取消后台验证码生成?
建站三合一如何选?哪家性价比更高?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
图册素材网站设计制作软件,图册的导出方式有几种?
已有域名和空间如何快速搭建网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
制作网站怎么制作,*游戏网站怎么搭建?
制作电商网页,电商供应链怎么做?
建站之星如何助力网站排名飙升?揭秘高效技巧
网站制作模板下载什么软件,ppt模板免费下载网站?
装修招标网站设计制作流程,装修招标流程?
如何零基础开发自助建站系统?完整教程解析
如何用好域名打造高点击率的自主建站?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
历史网站制作软件,华为如何找回被删除的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。