Android学习(18)Canvas_画布(绘图)
16lz
2021-01-23
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.本文只用于本人自身学习记录,如有侵权,请立即通知本人更改或删除
更多相关文章
- Android清空画布
- android clipPath切割画布
- 面试题5:椭圆里面有个内切圆,内切圆中有文字
- Android中自定义TextView的形状--圆形-椭圆形-圆角矩形-线条
- Android 画椭圆
- 超级炫酷!HTML5 Canvas火焰画笔动画
- 如何防止滚动体内容,并在打开时允许在非画布导航下滚动?