ShapeDrawable应用实例

    先说下我的需求,我的页面上有个TextView,现在我想在文本边上显示一个有新消息的提示,类似下图:

    

   这个可以通过TextView的   tv.setCompoundDrawablesRelativeWithIntrinsicBounds(start, top, end, bottom); 方法实现,问题是这个小Drawable怎么实现,自己也查阅了一些资料,没有我需要的,只好自己研究。还好弄出来了,现在把demo代码贴下,demo中是用ImageView显示的


  

	iv = (ImageView)this.findViewById(R.id.iv);
	btn = (Button)this.findViewById(R.id.btn);
		
	btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				iv.setImageDrawable(new MyShapeDrawable(11));
			}
	});

public static class MyShapeDrawable extends ShapeDrawable{
		
		
		private Paint mPaint;
		private RectF rectF;
		private String num;
		private float textSize;
		
		public MyShapeDrawable(int num) {
			// TODO Auto-generated constructor stub
			mPaint = new Paint();
			mPaint.setStyle(Paint.Style.FILL);
			mPaint.setAntiAlias(true);
			textSize = 22;
			this.num = String.valueOf(num);
			setIntrinsicWidth(40);
			setIntrinsicHeight(40);
			rectF = new RectF(0, 0, 40, 40);
		}
		
		
		@Override
		public void draw(Canvas canvas) {
			// TODO Auto-generated method stub
			mPaint.setColor(Color.RED);
			canvas.drawOval(rectF, mPaint);
			mPaint.setColor(Color.WHITE);
			mPaint.setTextSize(textSize);
			float txtWidth = mPaint.measureText(num);
			float x = (rectF.right - txtWidth)/2; // 计算文字水平位置
			float y = (rectF.height() - textSize)/2 + textSize; // 计算文字垂直位置
			canvas.drawText(num, x, y, mPaint);
		}
	}

另外附上Demo,有需要的同学自己下吧。


http://download.csdn.net/detail/asan855/8140435

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值