1. 使用android api ShapeDrawable 【图形绘制】 drawText 【文本绘制】
package mk.denganzhi.com.shapemodel;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.graphics.drawable.shapes.RectShape;
import android.graphics.drawable.shapes.RoundRectShape;
import android.graphics.drawable.shapes.Shape;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by denganzhi on 2020/3/2.
*/
public class MyView extends View {
public MyView(Context context) {
super(context);
}
ShapeDrawable shapeDrawable=null;
Paint paint=null;
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
/**
* ArcShape: 圆弧
* OvalShape: 椭圆形 默认
* RectShape 矩形
* RoundRectShape 圆角矩形
*/
// 绘制一个矩形
shapeDrawable=new ShapeDrawable(new OvalShape());
// 指定背景颜色
shapeDrawable.getPaint().setColor(Color.RED);
// 指定路径在View中的
// int left, int top, int right, int bottom
// right,bottom是右下角相对于左边,上边距离
shapeDrawable.setBounds(10,10,100,100);
//设置画笔
paint=new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(20);
paint.setTypeface(Typeface.DEFAULT_BOLD); // 设置粗体
paint.setAntiAlias(true); // 消除锯齿
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// canvas 画板,背景色
canvas.drawColor(Color.GREEN);
// 画笔, 这个坐标是左下角的坐标
canvas.drawText("hello.view",10,120,paint);
// 可以自己把自己画到画布上去
shapeDrawable.draw(canvas);
}
}
使用:
<mk.denganzhi.com.shapemodel.MyView
android:layout_width="200dp"
android:layout_height="200dp" />