自定义控件详解(一):Paint类与Canvas类
前言:
自定义控件必需的两个类:Paint与Canvas
Paint --- 相当于绘图的"笔"
Canvas --- 相当于绘图的"纸"
一、Paint
绘图笔,即用来设定比如 颜色、线条宽度、线条透明度等熟悉的。
看一下Paint类所有的setXX() 方法

其中常用的:
- paint.setAntiAlias(true);//抗锯齿功能
- paint.setColor(Color.RED); //设置画笔颜色
- paint.setStyle(Style.FILL);//设置填充样式
- paint.setStrokeWidth(10);//设置画笔宽度 ,单位px
- paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影
这里简单介绍下 第3个、第5个 方法的属性
1、paint.setStyle(Style.XXX); //设置填充样式

Style.FILL ,即 画笔填充 ,比如你要画一个矩形,那么这个矩形内部是填充了的

Style.STROKE ,即画笔画出的只有边框,

Style.FILL_AND_STROKE ,即边框线条和内部填充都有

2、paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影

(1)、radius(角度),即阴影的倾斜角度,
(2)、dx ,即阴影x方向偏移量
(3)、dy ,即阴影y方向偏移量
(4)、shadowColor ,即阴影的颜色
二、Canvas
画布、纸。
Canvas类的主要方法是drawXXX() , 即 画线条,画圆形,画矩形,画文字,画椭圆 等等

三、实践
我们写几个例子,用Paint控制画笔的线条宽度,颜色等属性
用Canvas控制画出的形状
首先自定义一个类继承自 View 类 重写三个构造方法

重写onDraw()方法,该方法用于绘制自定义控件
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); // 设置画笔的属性
paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setStrokeWidth(); //单位px
paint.setTextSize(); //设置文本大小 // 设置画布的属性 ,注意这里onDraw()方法参数有Canvas对象了 不要在 new 一个了
canvas.drawRGB(, ,);
canvas.drawLine(,,,,paint); //画一条从坐标(200,200) 到 坐标(600,200) 颜色为红色的 横向直线
canvas.drawRect(,,,,paint); //画一条左上角坐标(200,420) ,宽度400 高度100的 红色实心矩形
canvas.drawCircle(,,,paint); //画一条圆心坐标(400,800) 半径100 的红色实心圆形
canvas.drawText("这是画出来的文本",,,paint); //画一条左侧开始坐标(200,1000)的文本 }
在activity中使用

效果图:

自定义控件详解(一):Paint类与Canvas类的更多相关文章
- 自定义控件详解(三):Canvas效果变换
Canvas 画布 从前面我们已经知道了 Canvas 类可以绘出 各种形状. 这里学习一下Canvas 类的变换效果(平移,旋转等) 首先需要了解一下Canvas 画布, 我们用Canvas.Dra ...
- 自定义控件详解(二):Path类 相关用法
Path:路径 绘制路径:void drawPath (Path path, Paint paint) Path 可以绘制的路径 一.直线路径 1.基本方法 void moveTo (float st ...
- 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析
第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...
- WindowsPhone自定义控件详解(二) - 模板类库分析
转自:http://blog.csdn.net/mr_raptor/article/details/7251948 WindowsPhone自定义控件详解(一) - 控件类库分析 上一节主要分析了控件 ...
- 自定义控件详解(四):Paint 画笔路径效果
Paint 画笔 ,即用来绘制图形的"笔" 前面我们知道了Paint的一些基本用法: paint.setAntiAlias(true);//抗锯齿功能 paint.setColo ...
- 自定义控件详解(六):Paint 画笔MaskFilter过滤
首先看一个API:setMaskFilter(MaskFilter maskfilter): 设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等. 以下有两个Ma ...
- WindowsPhone自定义控件详解(一) - 控件类库分析
转自:http://blog.csdn.net/mr_raptor/article/details/7251942 为了让你的应用程序更有个性,我们通常会在WP7开发过程中会自定义自己风格的控件,自定 ...
- 安卓中Paint类和Canvas类的方法汇总
Paint类的常用的方法 1.setColor方法,用于设置画笔的颜色,public void setColor(int color)//参数color为颜色值,也可以使用Color类定义的颜色Col ...
- Android 控件架构与自定义控件详解
架构: PhoneWindow 将一个 DecorView 设置为整个应用窗口的根 View,这里面所有 View 的监听事件,都通过 WindowManagerService 来接收.DecorVi ...
随机推荐
- Info - 信息分析思路概要
信息分析要素 局部 --->整体 显性 --->隐性 表面 --->本质 割裂 --->联系 特殊 --->普遍 串行 --->并发 纵向 --->横向 单点 ...
- Spring.Net封闭业务类为WebService注意点和问题
最近遇到的一个项目中用到了标题所说的方法,用Spring.Net将业务类封闭成WebService供其它地方调用使用,感觉还是蛮新鲜的,于是在园子中搜了一篇园友写的文章(这里)自己也尝试着搭了一个环境 ...
- Python模块——PrettyTable 模块
简介 PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,十分实用. 安装 pip install prettytable 示例 从已有文件创建 CSV fr ...
- HDU 6022---MG loves set(K-D树)
题目链接 Problem Description MG is an intelligent boy. One day he was challenged by the famous master ca ...
- Xamarin.Android Timer使用方法
首先声明命名空间: using System.Threading; 然后创建Timer对象: Timer timer; 接着实例化timer并且给委托事件: TimerCallback timerDe ...
- Linux学习笔记之一————什么是Linux及其应用领域
1.1认识Linux 1)什么是操作系统 2)现实生活中的操作系统 win7 Mac Android iOS 3) 操作系统的发展史 (1)Unix 1965年之前的时候,电脑并不像现在一样普遍,它 ...
- 使用docker-compose快速构建集群示例(一)
一.zookeeper集群 docker-compose文件: version: '3.1' services: zoo1: image: zookeeper hostname: zoo1 conta ...
- 使用 Notification API 开启浏览器桌面提醒
Notifications API 允许网页控制向最终用户显示系统通知 —这些都在顶级浏览上下文视口之外,因此即使用户已经切换标签页或移动到不同的应用程序,也可以显示.该API被设计成与不同平台上的现 ...
- Android中Enum(枚举)的使用
简介 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.l ...
- Android开发之漫漫长途 XVII——动画(续)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...