android 在图标上显示数字

效果图:

动态显示当天的号数。

主要代码如下:

 

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;

/**
 * 图片上画文字
 * 
 * @author qhg
 * @date 2014年3月5日
 * 
 */

public class QNotifacationIcon {
	/**
	 * 在给定的图片上添加文字
	 * 
	 * @param context
	 *            上下文对象
	 * @param resId
	 *            图片资源ID
	 * @param text
	 *            需要显示的文字
	 * @param textSize
	 *            文字大小
	 * @param color
	 *            文字颜色
	 * @param typeface
	 *            文字字体
	 * @param offsetX
	 *            文字x的偏移量
	 * @param offsetY
	 *            文字y的偏移量
	 * @return 带文字的图片
	 */
	public static Bitmap generatorContactIcon(Context context, int resId,
			String text, float textSize, int color, Typeface typeface,
			float offsetX, float offsetY) {
		// 根据id获取需要处理的图片
		Bitmap icon = ((BitmapDrawable) (context.getResources()
				.getDrawable(resId))).getBitmap();
		int iconWidth = icon.getWidth();
		int iconHeight = icon.getHeight();
		// 初始化画布
		Bitmap contactIcon = Bitmap.createBitmap(iconWidth, iconHeight,
				Config.ARGB_8888);
		// 构建
		Canvas canvas = new Canvas(contactIcon);

		// 创建画笔
		Paint paint = new Paint();
		// 设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰
		paint.setDither(true);
		// 如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示
		// 速度,本设置项依赖于dither和xfermode的设置
		paint.setFilterBitmap(true);

		// 截取整个图片,从左上角到右下角
		Rect src = new Rect(0, 0, iconWidth, iconHeight);
		// 截取的图片放在画布上的位置
		Rect dst = new Rect(0, 0, iconWidth, iconHeight);
		canvas.drawBitmap(icon, src, dst, paint);

		// 抗锯齿和使用本身的文本字距
		Paint numPaint = new Paint(Paint.ANTI_ALIAS_FLAG
				| Paint.DEV_KERN_TEXT_FLAG);
		// 设置文字颜色
		numPaint.setColor(color);
		// 设置文字大小
		numPaint.setTextSize(textSize);
		// 设置文字字体
		numPaint.setTypeface(typeface);

		// 将文字内容画在图片上,x和y的坐标这里直接计算了文字在图片上的宽高偏移比例
		canvas.drawText(text, iconWidth * offsetX, iconHeight * offsetY,
				numPaint);
		return contactIcon;
	}
}


数字字体大小会随屏幕大小而不适应,可以根据屏幕宽度然后动态缩放字体比例。
调用方式:

 

 

		// 动态在图片上画日期数字
		((ImageView) convertView.findViewById(R.id.iv_leftImage))
				.setImageBitmap(QNotifacationIcon.generatorContactIcon(
						context, list_left_iamge_array[position],
						String.valueOf(new Date().getDate()), 30f, Color.GRAY,
						Typeface.DEFAULT_BOLD, 0.35f, 0.75f));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值