自定义View基础入门
来源:互联网 发布:json字符串base64编码 编辑:程序博客网 时间:2024/06/15 00:43
工作中很多时候会用到自定义View,刚开始接触可能会感觉到头痛,但是很多时候在所难免,所以积累点相关知识很重要,下面就从基础开始做起
参考泡网上的栗子:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html 点击打开链接
1、创建一个类继承View,并在构造方法里创建画笔,准备做点事情
public class CanvasTest extends View { private Paint mPaint; public CanvasTest(Context context) { super(context); //创建画笔 mPaint = new Paint(); mPaint.setColor(Color.BLUE); mPaint.setStrokeWidth(5); mPaint.setAntiAlias(true); mPaint.setStrokeJoin(Paint.Join.ROUND); }2、重写onDraw()方法,直接调用canvas对象进行绘制
绘制圆形drawCircle
//绘制圆形 canvas.drawCircle(100,100,100,mPaint);
绘制弧形
//绘制弧形区域 RectF rect = new RectF(100, 100, 200, 200); canvas.drawArc(rect, //弧形所使用的矩形区域 0, //开始的角度 90, //扫过的角度 true, //是否使用中心,使用中心的话会围绕一个圆心进行绘制,否则,不会 mPaint); //画笔
绘制线、颜色、路径文字
//绘制颜色 canvas.drawColor(Color.BLUE); //划线 canvas.drawLine(150, 150, 500, 500, mPaint); //绘制椭圆 canvas.drawOval(rect,mPaint); //绘制文字 canvas.drawPosText("HelloWorld",new float[]{ 100,150, 110,160, 120,170, 130,180, 140,190, 150,200, 160,210, 170,220, 180,210, 190,220},mPaint );
绘制矩形、折线
//绘制圆角矩形 canvas.drawRoundRect(rect, 20,//x轴半径 20, //y轴半径 mPaint); //绘制矩形 Rect mRect=new Rect(300,300,500,500); canvas.drawRect(mRect,mPaint); //绘制折线 path Path mPath=new Path(); mPath.moveTo(500,500); mPath.lineTo(600,600); mPath.lineTo(600,200); mPath.lineTo(500,300); canvas.drawPath(mPath,mPaint);
绘制一个钟表图案
mPaint.setAntiAlias(true);//抗锯齿 mPaint.setStyle(Paint.Style.STROKE); canvas.translate(canvas.getWidth()/2, 200); //将位置移动画布的坐标点:150,150 canvas.drawCircle(0, 0, 100, mPaint); //画圆 //使用path绘制路径文字 canvas.save(); canvas.translate(-75, -75); Path path = new Path(); path.addArc(new RectF(0,0,150,150), 150, -150); //文字画笔 Paint textPaint = new Paint(mPaint); textPaint.setTextSize(14); textPaint.setStrokeWidth(1); canvas.drawTextOnPath("TISSION TIME ", path, 28, 0, textPaint); canvas.restore(); Paint tmpPaint = new Paint(mPaint); //小刻度画笔对象 tmpPaint.setStrokeWidth(1); float y=100; int count = 60; //总刻度数 for(int i=0 ; i <count ; i++){ if(i%5 == 0){ //绘制大刻度 canvas.drawLine(0f, y, 0, y+12f, mPaint); //绘制文字 canvas.drawText(String.valueOf(i/5), -4f, -y-20f, tmpPaint); }else{ //绘制小刻度 canvas.drawLine(0f, y, 0f, y +5f, tmpPaint); } canvas.rotate(360/count,0f,0f); //旋转画布 } //绘制指针 tmpPaint.setColor(Color.GRAY); tmpPaint.setStrokeWidth(4); canvas.drawCircle(0, 0, 7, tmpPaint); tmpPaint.setStyle(Paint.Style.FILL); tmpPaint.setColor(Color.YELLOW); canvas.drawCircle(0, 0, 5, tmpPaint); canvas.drawLine(0, 10, 0, -65, mPaint); }
阅读全文
0 0
- 自定义View基础入门
- 自定义view基础入门
- 自定义view快速入门--基础概念
- 自定义View入门
- Android自定义View入门
- 自定义view入门
- 自定义View入门
- Android自定义View入门
- Android 自定义View入门
- Android自定义View入门
- Android自定义View入门
- 自定义View入门
- Android--自定义View入门
- Android自定义View基础
- 自定义View基础
- android--View自定义基础
- android自定义View基础
- 自定义 View 基础篇
- 点击事件异常
- 虚拟现实音乐初创公司MelodyVR完成650万美元融资
- Unity c# reference value type
- 支付宝手机网站支付,错误代码 insufficient-isv-permissions 错误原因: ISV权限不足
- 通过ResultSet执行查询操作
- 自定义View基础入门
- MYSQL字符串处理函数
- Plug-in 透视图
- jQuery<4.4>
- Linux内存的使用。
- WARNING: Duplicate VG name VolGroup故障处理
- 关于Source Insight 的Context window中不能显示相关信息
- 优秀应用汇总
- MY_OC_你好, 设计模式