Android学习(18)Canvas_画布(绘图)
相关知识:
- View(视图):View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以任意扩展。Android中,任何一个View类都只需要重写OnDraw方法来实现,也可以是简单的文本形式等
- Canvas(画布):Android中利用Canvas画出各种图形(点、直线、圆、椭圆、文字、矩形等)
- Paint(画笔):Paint类拥有风格和颜色信息,可以绘制几何图形、文本和位图
- View、Canvas、Paint的关系相当于课桌、笔记本、铅笔的关系。
1.在Activity中创建内部类MyView,利用Canvas画一个红色的矩形
public class CanvasActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_canvas);
//引用View视图
setContentView(new MyView(this));
}
//声明实例化画笔
private Paint paint = new Paint();
//创建View
public class MyView extends View{
public MyView(Context context) {
super(context);
}
//重新onDraw方法
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画布背景颜色(白色)
canvas.drawColor(0xFFFFFFFF);
//保存当前图形的一个可编辑或者可剪辑的状态
canvas.save();
//设置画笔颜色
paint.setColor(Color.RED);
canvas.drawRect(0,0,200,200,paint);
//释放资源
canvas.restore();
}
}
}
2.绘制多个图形
(1)新建一个MyView.java类,继承View
public class MyView extends View {
//实例化三支画笔
private Paint p1 = new Paint();
private Paint p2 = new Paint();
private Paint p3 = new Paint();
public MyView(Context context) {
super(context);
//设置画笔属性
p1.setColor(Color.BLUE);
p2.setColor(Color.RED);
p1.setStrokeWidth(3);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画布的背景颜色
canvas.drawColor(Color.WHITE);
//画直线(fromX,fromY,toX,toY,Paint)
canvas.drawLine(0,0,1000,500,p1);
canvas.drawLine(0,500,1000,0,p2);
//点(坐标X,坐标Y,Paint)
canvas.drawPoint(500,200,p1);
//绘制圆(坐标X,坐标Y,半径,Paint)
canvas.drawCircle(500,500,100,p3);
//绘制椭圆
RectF rectF = new RectF();
//椭圆最左端距离屏幕的位置
rectF.left=400;
//椭圆最右端距离屏幕的位置
rectF.right=600;
//椭圆最上端距离屏幕的位置
rectF.top=700;
//椭圆最下端距离屏幕的位置
rectF.bottom=800;
canvas.drawOval(rectF,p1);
//绘制文字
p3.setTextSize(30);
canvas.drawText("Canvas的使用",0,1200,p3);
}
}
(2)在Activity中加载该视图
public class Canvas2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_canvas2);
//在本页面加载视图MyView
setContentView(new MyView(this));
}
}
声明:
1.知识点来源于《网易云课堂》——《Android基础视频教程》
2.本文只用于本人自身学习记录,如有侵权,请立即通知本人更改或删除