采用文本图片填充画笔
public class CircleView2 extends ImageView {
public CircleView2(Context context) {
super(context);
inti();
}
public CircleView2(Context context, AttributeSet attrs) {
super(context, attrs);
inti();
}
public CircleView2(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
inti();
}
Paint paint;
Path path;
private void inti() {
paint = new Paint();
//画笔粗细
paint.setStrokeWidth(100);
paint.setStyle(Style.STROKE);
//边角圆形
paint.setStrokeCap(Cap.ROUND);
paint.setStrokeJoin(Join.ROUND);
//为画笔填充文本
setShade();
path = new Path();
}
private void setShade() {
Paint paint2 = new Paint();
paint2.setTextSize(120);
paint2.setColor(Color.WHITE);
String text = "壹佰万";
Rect rect = new Rect();
//获取文本大小
paint2.getTextBounds(text, 0, text.length(), rect);
//创建略大于文本的bitmap作为画布
Bitmap bitmap = Bitmap.createBitmap(rect.width() + 20, rect.height() + 20, Config.ARGB_8888);
//在bitmap上作画
Canvas canvas = new Canvas(bitmap);
//在bitmap上绘制文本
canvas.drawText(text, 0, rect.height(), paint2);
//为画笔设置填充图片
paint.setShader(new BitmapShader(bitmap, TileMode.REPEAT, TileMode.REPEAT));
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
path.lineTo(event.getX(), event.getY());
invalidate();
break;
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, paint);
}
}