andriod自定义View绘制形, 圆形, 三角形,...
来源:互联网 发布:宇宙几维 知乎 编辑:程序博客网 时间:2024/06/14 05:41
我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆形,三角形,多边形等….
1.矩形
package com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;/** * 矩形 */public class RectView extends View { //无参 public RectView(Context context) { super(context); } //有参 public RectView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); //设置实心 p.setStyle(Paint.Style.FILL); // 设置红色 p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); //绘制 canvas.drawRect(50, 100, 300, 300, p); }}
圆形
package com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;import android.view.WindowManager;/** * 圆 */public class CircleView extends View { int width; int height; //无参 public CircleView(Context context) { super(context); init(); } //有参 public CircleView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { //获取屏幕的宽高 //Android绘图机制(一)——自定义View的基础属性和方法里面有讲 WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); canvas.drawCircle(width / 2, height / 2, width / 2, p); }}
三角形
package com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;/** * 三角形 */public class TrigonView extends View { //无参 public TrigonView(Context context) { super(context); } //有参 public TrigonView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); //实例化路径 Path path = new Path(); path.moveTo(80, 200);// 此点为多边形的起点 path.lineTo(120, 250); path.lineTo(80, 250); path.close(); // 使这些点构成封闭的多边形 canvas.drawPath(path, p); }}
扇形
package com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;/** * 扇形 */public class SectorView extends View { public SectorView(Context context) { super(context); } public SectorView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(60, 100, 200, 240); canvas.drawArc(rectF, 200, 130, true, p); }}
椭圆
package com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;/** * 椭圆 */public class OvalView extends View { public OvalView(Context context) { super(context); } public OvalView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(60, 100, 200, 240); rectF.set(210,100,250,130); canvas.drawOval(rectF, p); }}
曲线
package com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;public class PathView extends View { public PathView(Context context) { super(context); } public PathView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); p.reset(); //设置空心 p.setStyle(Paint.Style.STROKE); Path path = new Path(); path.moveTo(100, 320);//设置Path的起点 path.quadTo(150, 310, 170, 400); //设置路径点和终点 canvas.drawPath(path, p); }}
文字和图片
package com.lgl.view.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;import com.lgl.view.R;public class TvIvView extends View { public TvIvView(Context context) { super(context); } public TvIvView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.RED); //文本 canvas.drawText("自定义文本", 250, 330, p); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); //图片 canvas.drawBitmap(bitmap, 250, 360, p); }}
阅读全文
0 0
- andriod自定义View绘制形, 圆形, 三角形,...
- 自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- 自定义View绘制圆形进度条
- 自定义view 三角形路径绘制
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- 自定义View笔记-圆形控件View的绘制
- Android自定义View-绘制扇形实现圆形进度
- 自定义view绘制圆形里面带个勾的动画
- 自定义View,绘制一个圆形,并可以单击拖动
- canvas绘制矩形、三角形、圆形
- 自定义绘制圆形
- Andriod自定义view示例
- andriod自定义view 小案例(带进度的圆形进度条)
- 自定义View,圆形图框
- 自定义View圆形进度条
- 自定义圆形进度View
- 自定义View--圆形ImageView
- dom4j之selectSingleNode方法
- 设计模式学习-装饰器模式
- 支持向量机SVM
- 解剖App 获取里面所有的提图片,按照分辨率分类
- easyui之accordion
- andriod自定义View绘制形, 圆形, 三角形,...
- 约瑟夫环问题
- js之执行环境(作用域)
- cpu之PCJump
- vue之图标字体制作
- linux下硬盘性能(网络盘)测试工具fio使用
- spring依赖注入引发的一点思考
- 写点什么?
- Element之获取子节点方法