android在假设绘制自己定义的bitmap,然后返回给ImageView
先来说一下FontMetrics这个类。这个类是关于字符属性和測量的类
用图能够更精确的知道各个属性的含义:
我们在Layout中有一个ImageView,我们能够通过:
<span style="white-space:pre"> </span>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;
}
android在假设绘制自己定义的bitmap,然后返回给ImageView的更多相关文章
- Android画图系列(二)——自己定义View绘制基本图形
这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...
- Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas
Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas 1,Bitmap对象的获取 首先说一下Bitmap,Bitmap是Androi ...
- Android应用层View绘制流程之measure,layout,draw三步曲
概述 上一篇博文对DecorView和ViewRootImpl的关系进行了剖析,这篇文章主要是来剖析View绘制的三个基本流程:measure,layout,draw.仅仅有把这三个基本流程搞清楚了, ...
- Android 举例说明自己的定义Camera图片和预览,以及前后摄像头切换
如何调用本地图片,并调用系统拍摄的图像上一博文解释(http://blog.csdn.net/a123demi/article/details/40003695)的功能. 而本博文将通过实例实现自己定 ...
- Android之View绘制流程源码分析
版权声明:本文出自汪磊的博客,转载请务必注明出处. 对于稍有自定义View经验的安卓开发者来说,onMeasure,onLayout,onDraw这三个方法都不会陌生,起码多少都有所接触吧. 在安卓中 ...
- Android中怎样做到自己定义的广播仅仅能有指定的app接收
今天没吊事.又去面试了,详细哪家公司就不说了,由于我在之前的blog中注明了那些家公司的名字,结果人家给我私信说我泄露他们的题目.好吧,我错了... 事实上当我们已经在工作的时候.我们能够在空暇的时间 ...
- Android 对话框(Dialog) 及 自己定义Dialog
Activities提供了一种方便管理的创建.保存.回复的对话框机制,比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...
- Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)
View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇 ...
- Android View 如何绘制
上文说道了Android如何测量,但是一个漂亮的控件我只知道您长到哪儿,这当然不行.只需要简单重写OnDraw方法,并在Canvas(画布)对象上调用那根五颜六色的画笔就能够画出这控件"性感 ...
随机推荐
- 将一个int转成二进制c
/* 由于是2位 十进制整数,所以转化后可以存 一个int 型中: reverse函数 提供了这种转化 如果需要转化的数字比较大int存不下,则需要数组来存 */ #include<stdio. ...
- 标准I/O库函数的缺陷
标准IO库存在着两个缺陷.首先,它是在某一台特定类型的机器上实现的,而没有考虑其他的具有不同特性的机器.这样就可能导致在其中的一台机器上运行很好的程序,在另外一台机器上却出现错误,而这其中的原因仅仅是 ...
- STLport在vc6中的集成
STLport的下载 http://sourceforge.net/projects/stlport/ STLport的编译 * 试验环境 : win7x64sp1 + vc6sp6* 打开控制台窗口 ...
- 操作VCF卡片信息的第三方jar包:ez-vcard
ez-vcard https://github.com/mangstadt/ez-vcard 目前最新的版本已经更新到0.9.8 起初使用该jar包的时候,是0.9.3,当时遇到一个很尴尬的问题, 就 ...
- Windows8下通过IPv4地址访问Tomcat
最近在做Android开发,手机客户端需要通过IPv4地址访问电脑启动的Web应用服务. 在Windows 7不需要做什么设置,localhost,127.0.0.1或者192.168.0.100都可 ...
- Codeforces Round #270 A~D
Codeforces Round #270 A. Design Tutorial: Learn from Math time limit per test 1 second memory limit ...
- NoSQL简要数据库
前言 NoSQL:not only SQL(不No SQL啊),它的意思是:在关系数据库中使用关系数据库时适用,但在关系数据库中不适合本地使用其它数据库.NoSQL了弥补关系型数据库的不足,能够算是关 ...
- RAC 11.2.0.4 安装 遇到 INS-06001
今天安装11.2.0.4的grid软件,在配置passwordless SSH的时候,点击setup 出现此错误 开始网上搜了一把.说什么的都有,什么系统bug啊什么的 但是我另外一套rac却很正常就 ...
- premake Ubuntu下的安装
premake是个跨平台的编译工具,先看看在Ubuntu下怎么安装. 首先下载,在/usr目录下: sudo wget -O premake-4.4-beta4-linux.tar.gz http:/ ...
- 经典系统windows xp sp3官方原版下载(附XP序列号)
经典系统windows xp sp3官方原版下载(附XP序列号) 在过几日,微软最新的操作系统windows 7就将像外发售了!虽然Vista操作系统已经问世多年,但XP系统仍然占据着王位,在市 ...