博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android在假设绘制自己定义的bitmap,然后返回给ImageView
阅读量:6233 次
发布时间:2019-06-22

本文共 1902 字,大约阅读时间需要 6 分钟。

先来说一下FontMetrics这个类。这个类是关于字符属性和測量的类

用图能够更精确的知道各个属性的含义:

我们在Layout中有一个ImageView,我们能够通过:

		ImageView item_image = (ImageView)findViewById(R.id.item_image);		item_image.setImageBitmap(makeMessageCenterIcon());
这样的方式来把bitmap来填入ImageView

以下做一个这样的效果的。特别适合有消息通知的icon:

代码能够这样来写:

protected Bitmap makeMessageCenterIcon(){		int mMsgCnt = 4;		Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.desktop_messageicon);		if(icon == null){			return icon;		}				//make notice icon		if(mMsgCnt > 0) {			Bitmap noticeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.notice_count_bg);			if(noticeIcon != null){				int h = noticeIcon.getHeight();				int w = noticeIcon.getWidth();												Bitmap noticeIconBmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);//noticeIconBmp是终于须要的画字的bitmap				Canvas noticeCanvas = new Canvas(noticeIconBmp);				Paint noticeCntpaint = new Paint();				noticeCntpaint.setAntiAlias(true);				noticeCanvas.drawBitmap(noticeIcon, 0, 0, noticeCntpaint);				noticeCntpaint.setTextAlign(Align.CENTER);				noticeCntpaint.setColor(getResources().getColor(R.drawable.white));								FontMetrics fontMetrics = noticeCntpaint.getFontMetrics(); 				float x = noticeIcon.getWidth() / 2;				float y = (noticeIcon.getHeight() - fontMetrics.ascent) / 2 - 2;  //fontMetrics是在baseline以上的字符最高处的位置				noticeCanvas.drawText(String.valueOf(mMsgCnt), x, y, noticeCntpaint);  //在canvas上的(x,y)的位置上写mMsgCnt								//draw notice icon onto message icon				h = icon.getHeight();				w = icon.getWidth();				Bitmap iconBmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);				Canvas canvas = new Canvas(iconBmp);								Paint paint = new Paint();				paint.setAntiAlias(true);				canvas.drawBitmap(icon, 0, 0, paint);				float left = icon.getWidth() - noticeIcon.getWidth();				float top = 0;				canvas.drawBitmap(noticeIconBmp, left, top, paint);								return iconBmp;			}		}		return icon;			}
你可能感兴趣的文章
eclipse项目(project)出现感叹号的一种处理办法
查看>>
CCSpawn 同步动作
查看>>
Gexmul虚拟机内存空间原理简述
查看>>
java--文件统计
查看>>
解决Oracle10修改机器名后oracledbconsoleorcl服务无法启动的问题
查看>>
IOS API中的“错误”
查看>>
PHP_常用正则资料
查看>>
java通过JDBC链接mysql报错解决办法
查看>>
猎豹浏览器抢票功能遭屏蔽 要“约谈”12306
查看>>
java&android线程池-Executor框架之ThreadPoolExcutor&ScheduledThreadPoolExecutor浅析(多线程编程之三)...
查看>>
Spark的JavaWordCount例子
查看>>
知乎上小米变相约瑟夫环面试题微软解法的py代码
查看>>
快速排序
查看>>
提升应用视觉Android效果的10个UI技巧
查看>>
[接口已更新]免费天气预报API-六天/实时-中国天气网
查看>>
连接耗尽型攻击
查看>>
正确解读free -m
查看>>
如何利用UIScrollView写一个多选ScrollView
查看>>
Hadoop 2.0集群配置详细教程
查看>>
window10下docker使用
查看>>