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(画布)对象上调用那根五颜六色的画笔就能够画出这控件"性感 ...
随机推荐
- Unity3d 网络编程(二)(Unity3d内建网络各项參数介绍)
这里是全部Unity3d在网络中能用到相关的类及方法.纵观參数功能, Unity3d来写一个手游是不二的选择: RPC 能够传递的參数 int float string NetworkPlayer N ...
- JSP两个动作(include,forward)
include动作 <div id="container"> <jsp:include page="HelloWorld.jsp" flush ...
- keepavlied一些参数
priority 表示优先级 virtual_ipaddress 虚拟的IP地址(VIP) delay_loop 每个2秒检查一次real_server状态 notify_down 检测到服务down ...
- mysql 结合keepalived测试
vip:192.168.32.66 192.168.32.6 主库: mysql> show variables like '%read_only%'; +------------------+ ...
- codeforces 316F3 Suns and Rays
题目在此 找出中有多少个太阳以及每个太阳的散发线段. 算法 原图: 将图"缩小",如果一个白点的四周有黑点,那么把这个白点变成黑点: 将图"放大",即上述&qu ...
- 遗传算法Matlab源程序
参考自: http://blog.163.com/zhaoshuyu_thomas/blog/static/461929072009103034816716/ 大家内容上可以参考上述文章,但其代码有很 ...
- c语言,数组和字符串
1. “数组名代表了数组的存储首地址,是一个地址常量”. 对于char *p1 = "A String."; 和 char p2[] = "Another String. ...
- 基于visual Studio2013解决C语言竞赛题之1037数组求列和
题目 解决代码及点评 /* 功能:已知有三个数组A,B,C,A为5行5列的二维数组,B.C为只有5个元素的一维数组,键盘输入数据的顺序如下: 23,45,6,1,- ...
- 最近盯着accesslog看,发现许多奇怪的东东
1.spider,各式各样的spider,就像海里的游鱼 有大的,有小的 2.各类探测http代理的spider,比如这种日志 60.173.14.85 - - [03/Sep/2013:09:59: ...
- xss 跨站脚本攻击
这是一个非常简单的攻击. 两个页面如下: <form action="MyJsp.jsp" method="get"> <input type ...