自定义控件-----(第一节)
来源:互联网 发布:淘宝助理取消二次验证 编辑:程序博客网 时间:2024/06/06 16:58
这段时间比较充足,自入行以来,就一直有计划要补充一下自己在自定义控件方面的知识点,终于提到日程上了,后续会一直更新,先从基础开始对基本的绘制进行简单API的熟悉,下面不多说,直接上干货:
下面就是绘制的一些简单图形,先看一下效果图:(没有进行整理位置,注重的是如何绘制,简单实现,熟悉api即可)
接下来就是代码,想学习的要多练习,必须亲自上手敲,本人深有体验:(上面有些简单注释)
private Paint paint;private Paint paint2;private Paint paint3;float[] points = {0, 0, 30, 200, 50, 240, 100, 250, 140, 200, 150, 250, 150, 100};float[] points2 = {0, 0, 30, 200, 50, 240, 50, 240, 100, 250, 100, 250, 140, 200};private Paint paint4;public Rect_1_1_Demo(Context context) { this(context, null);}public Rect_1_1_Demo(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0);}public Rect_1_1_Demo(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView();}private void initView() { paint = new Paint(); paint.setColor(Color.RED); paint.setStrokeWidth(5);//设置线条宽度 paint.setStrokeCap(Paint.Cap.ROUND); paint.setStyle(Paint.Style.STROKE); paint2 = new Paint(); paint2.setColor(Color.BLACK); paint2.setStrokeWidth(20); paint2.setStrokeCap(Paint.Cap.SQUARE); paint2.setStyle(Paint.Style.FILL); paint3 = new Paint(); paint3.setColor(Color.RED); paint3.setStyle(Paint.Style.FILL_AND_STROKE); paint4 = new Paint(); paint4.setColor(Color.BLUE); paint4.setTextSize(36); paint4.setStrokeWidth(2);}@Overrideprotected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRect(30, 30, 130, 130, paint); canvas.drawRect(190, 30, 290, 130, paint2); canvas.drawRect(350, 30, 450, 130, paint3); canvas.drawPoint(510, 60, paint); canvas.drawPoint(570, 60, paint2); canvas.drawPoints(points, 2, 10, paint2); canvas.drawOval(570, 200, 770, 350, paint); canvas.drawLine(30, 300, 400, 280, paint); canvas.drawLines(points2, 2, 12, paint); canvas.drawRoundRect(30, 400, 300, 500, 20, 20, paint2); canvas.drawRoundRect(400, 400, 670, 500, 20, 20, paint); /** * 对参数进行解释: * float left, * float top, * float right, * float bottom, * float startAngle, 0-180度。0度代表数学的X轴正方向,正数代表扇形在下方,负数代表扇形在上方 * float sweepAngle, 正数代表扇形在下方,负数代表扇形在上方 * boolean useCenter true表示画一个扇形,表示连接圆心,false表示画一条弧线,不连接圆心 */ canvas.drawArc(200, 600, 400, 800, 0, -90, true, paint); canvas.drawArc(100, 600, 200, 700, 0, -90, false, paint); //下面就是通过path来进行绘制 Path path = new Path(); //画圆 path.addCircle(600, 650, 50, Path.Direction.CW); path.addCircle(675, 650, 50, Path.Direction.CW); path.addCircle(750, 650, 50, Path.Direction.CW); path.addCircle(825, 650, 50, Path.Direction.CW); canvas.drawPath(path, paint); Path path1 = new Path(); path1.moveTo(100, 800); path1.lineTo(200, 900); // 由当前位置 (100, 800) 向 (300, 900) 画一条直线 path1.rLineTo(100, 0); //继续上次结束的点为远点进行画线 canvas.drawPath(path1, paint); //true 表示绘制下一个弧线的时候不会和上次绘制的直线进行相连,false则相反 Path path2 = new Path(); path2.moveTo(500, 800); path2.lineTo(600, 900); path2.arcTo(600, 800, 700, 900, 40, -120, true); canvas.drawPath(path2, paint); //close方法的使用, Path path3 = new Path(); path3.moveTo(50, 1000); path3.lineTo(180, 1000); path3.rLineTo(100, 100); path3.close(); canvas.drawPath(path3, paint); //绘制图片 Bitmap girlBitmap = ((BitmapDrawable) getResources().getDrawable(R.mipmap.ic_launcher)).getBitmap(); canvas.drawBitmap(girlBitmap, 300, 900, paint); //绘制文字 canvas.drawText("canvas",500,1000,paint4);}
希望对大家有用,感谢感谢,勿喷勿喷!不想看清绕道!!!
阅读全文
0 0
- 自定义控件-----(第一节)
- EALayout 第一节 控件基本布局
- 第六章 第一节 文本控件
- 自定义元素(自定义控件)
- 自定义控件(一)
- 自定义控件(一)
- 自定义控件(一)
- 自定义控件(一)
- 自定义控件(一)
- 自定义控件(一)
- 自定义控件(二)
- 自定义控件(一)
- 自定义控件(二)
- 自定义控件(三)
- 自定义控件(一)
- 自定义控件(一)
- 自定义控件(一)
- 自定义控件(一)
- springmvc和struts2拦截器的简单使用以及配置
- 一句话一张图搞懂正向代理、反向代理
- centos6.5下使用yum安装mysql
- 顺时针打印矩阵java实现
- 2017年5大科技趋势:一些设备类别开始消失
- 自定义控件-----(第一节)
- Eclipse 4.5.1火星版配置tomcat和svn
- Android7.0调用相机
- UDP协议发包的使用(DatagramSocket、DatagramPacket)
- C语言中的文件操作
- 百度竞价新人提升赚钱概率的技巧方法
- 润乾V4 行式填报流水号的设定
- Python 保存数组至.mat文件,报错:AttributeError: 'numpy.ndarray' object has no attribute 'items'
- spring data jpa 分页