android自定义View(二)
来源:互联网 发布:播音制作软件 编辑:程序博客网 时间:2024/05/16 14:25
如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种,自绘控件、组合控件、以及继承控件。那么下面我们就来依次学习一下,每种方式分别是如何自定义View的。
一、自绘控件
自绘控件的意思就是,这个View上所展现的内容全部都是我们自己绘制出来的。绘制的代码是写在onDraw()方法中的.
在做自绘控件的之前,我们先来了解一下Canvas 这个类 的常用的几个方法:
canvas.drawRect(left, top, right, bottom, paint);绘制矩形
paint.setColor(Color.RED);paint.setStyle(Style.STROKE);//绘制矩形canvas.drawRect(100, 50, 200, 100, paint);
<span style="white-space:pre"></span> paint.setColor(Color.RED);paint.setStyle(Style.STROKE);paint.setStrokeWidth(2);/*绘制圆形 * cx 为中心横坐标 * cy 为中心纵坐标 * radius 为半径 * */<span style="white-space:pre"></span>canvas.drawCircle(75, 150, 50, paint);
canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint):绘制弧形
paint.setColor(Color.RED);paint.setStyle(Style.STROKE);paint.setStrokeWidth(2);/* 绘制弧形RectF 用来绘制圆弧的矩形区域当RecF 只有当绘制的矩形为 正方形 的时候,则绘制出来的弧形为圆形或扇形绘制圆弧的时候圆心坐标(centerX,centerY): RecF矩形的中心点 半径 radio: RecF矩形的边长startAngle: 圆弧角度的起始线, 以矩形的水平分割线的右边为基准 >0 顺时针,<0 逆时针 sweepAngle 圆弧角度的摆动线 ,以 startAngle起始线 为基准 >0 顺时针,<0 逆时针 useCenter 如果 为true 圆弧中心角度扫描的边界线将会被绘制出来,如果为false则表示 圆弧中心角度扫描的边界线将不会被绘制出来 */<span style="white-space:pre"></span>canvas.drawArc(new RectF(20, 20, 200, 200), -20, -20, true, paint);
drawRoundRect(RectF rect, float rx, float ry, Paint paint) :绘制圆角矩形
<span style="white-space:pre"></span> paint.setColor(Color.RED);paint.setStyle(Style.STROKE);paint.setStrokeWidth(2);/* *绘制圆角矩形 * RectF 绘制矩形区域 * rx : x方向的圆角坐标 * ry : y方向的圆角坐标 *//*setARGB(int a,int r,int g,int b); * 设置绘制的颜色,a代表透明度,a: 0-255 透明度递减 ,(256,257)完全透明, * r,g,b代表颜色值。 */paint.setARGB(250,250,0,0); //设置锯齿 true: 绘制锯齿 false :不绘制锯齿(使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢)paint.setAntiAlias(false); //是否设置图像的抖动,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰 paint.setDither(true);canvas.drawRoundRect(new RectF(50, 50, 350, 350), 50, 50, paint);
canvas.drawLine(startX, startY, stopX, stopY, paint):绘制直线
paint.setColor(Color.RED);paint.setStyle(Style.STROKE);paint.setStrokeWidth(2);/* *绘制直线 * (startX,startY)为直线的起始点坐标 * (stopX,stopY) 为直线的终点坐标 */canvas.drawLine(10, 150, 150, 150, paint);
drawOval(RectF oval, Paint paint):绘制椭圆
paint.setColor(Color.RED);paint.setStyle(Style.STROKE);paint.setStrokeWidth(2);/* * 绘制椭圆 * RectF : 为要绘制椭圆的矩形区域 * 绘制的椭圆 一定要 与矩形的四条边有接触 ,所以可以在矩形中绘制椭圆 */canvas.drawOval(new RectF(50, 50, 500, 500), paint);
canvas.drawText(text, x, y, paint):绘制文本
paint.setColor(Color.RED);paint.setStyle(Style.STROKE);paint.setStrokeWidth(2);canvas.drawText("你好", 10, 50, paint);
相关文章链接:点击打开链接
有关继承自定义View的实现:android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
源码下载
0 0
- android自定义View(二)
- Android自定义View(二)
- android 自定义view(二)
- Android自定义View(二)
- Android自定义View(二)
- Android 自定义View(二)
- Android 自定义View(二)
- android 自定义view(二),继承view
- Android 自定义View (二)
- Android 自定义View (二)
- Android 自定义View (二)
- Android 自定义View (二)
- android 自定义view二
- Android自定义View(二)
- Android 自定义View 二
- Android 自定义View界面大合集(二)
- Android自定义View基础篇(二)
- Android自定义View(二)进阶
- 算法导论 chapter 10.1 Page233 Stack push and pop
- JQuery上传插件Uploadify使用详解
- google+登录API 续
- android apk裁剪定制
- poj 2478/3090 欧拉函数应用(Farey 序列/斜率判重)
- android自定义View(二)
- cocos2dx 3.0 触摸机制
- URAL 1903 Unidentified Ships(大数组合数打表取模)
- [leetcode] Merge Two Sorted Lists
- node.js应用之Hexo
- 探索性数据分析week2
- Struts2.xml结构
- Windows客户端C/C++编程规范“建议”——风格
- 【UVA424】AC