自定义控件详解(二):Path类 相关用法
Path:路径
绘制路径:void drawPath (Path path, Paint paint)
Path 可以绘制的路径
一、直线路径
1、基本方法
void moveTo (float startX, float startY)
直线的开始点;即将直线路径的绘制点定在(startX,startY)的位置;
void lineTo (float endX, float endY)
直线的结束点,又是下一次绘制直线路径的开始点;
void close ()
如果连续画了几条直线,但没有形成闭环,调用Close()会将路径首尾点连接起来,形成闭环;
①、不形成闭环
------------>
②、形成闭环 ,可以看到首尾两个坐标之间闭合了一条直线
------------>
二、矩形路径
1、基本方法
void addRect (float left, float top, float right, float bottom, Path.Direction dir)
void addRect (RectF rect, Path.Direction dir) RectF rect = new RectF(float left, float top, float right, float bottom);
可见两个方法类似。
这里有一个 Path.Direction dir 参数, 翻译一下就是:路径绘制的方向
有两个系统值:
(1)、Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;
(2)、Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;
注意点:RectF 和 Rect 类 的区别
1、都表示矩形
2、精度不一样,Rect是int ,RectF是float
3、矩形路径用到的是RectF类,注意不要使用Rect类
------------>
三、圆形路径
1、基本方法
void addCircle (float x, float y, float radius, Path.Direction dir)
就一个方法,参数很显然: x 圆心X轴坐标 ,y 圆心Y轴坐标 ,radius 圆的半径 ,dir 绘制圆形路径的方向
------------>
四、椭圆路径
1、基本方法
void addOval (RectF oval, Path.Direction dir)
RectF rect = new RectF(float left, float top, float right, float bottom);
可以发现和绘制矩形路径类似 用到了RectF类
注意四个参数的意义
------------>
五、弧形路径
1、基本方法
void addArc (RectF oval, float startAngle, float sweepAngle)
两个参数的意义:
①、float startAngle:开始的角度,X轴正方向为0度
②、float sweepAngel:持续的度数;
画一个X轴正方形开始的(0°),持续270°的 弧形
------------>
六、圆角矩形路径
1、基本方法
void addRoundRect (RectF rect, float[] radii, Path.Direction dir)
void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)
这里有两个方法:
①、 void addRoundRect (RectF rect, float[] radii, Path.Direction dir)
可以看到多了一个float[] radii 参数,这个参数控制的是圆形矩形四个角的圆形程度,每一个角又由一个X轴半径和一个Y轴半径控制
所以这个数组参数必须要有8个值 ,这个方法能控制生成的圆角矩形各个角的圆形程度都不一样
从左上角开始 顺时针 每两个值控制一个角
下面例子看到看到 从左上角瞬时间开始角的程度分别为 5px,10px,15px,20px
------------>
②、void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)
这个方法更简单,只要控制一次x,y轴半径,让四个角统一的设置一次就行
如下图,每一个角的程度都一致
------------>
------------------------------------------------------------------------------------------------------------------------------
以上是路径的各种绘制方法,接下来讲一下 路径绘制基本都要用到的参数
1、Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;
2、Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;
很简单可以看出这个参数其实就是控制我们绘制一个图形是 顺时针绘制的还是逆时针绘制的
现在我们给绘制的时候加上文本,就可以轻松看出绘制的顺序了
----------->
自定义控件详解(二):Path类 相关用法的更多相关文章
- WindowsPhone自定义控件详解(二) - 模板类库分析
转自:http://blog.csdn.net/mr_raptor/article/details/7251948 WindowsPhone自定义控件详解(一) - 控件类库分析 上一节主要分析了控件 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)
View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇 ...
- PopUpWindow使用详解(二)——进阶及答疑
相关文章:1.<PopUpWindow使用详解(一)——基本使用>2.<PopUpWindow使用详解(二)——进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ...
- Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
[Android布局学习系列] 1.Android 布局学习之——Layout(布局)详解一 2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数) 3.And ...
- 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一. 案例说明 本节定义了类Sta ...
- Shiro 安全框架详解二(概念+权限案例实现)
Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...
- CSS选择器详解(伪类) 转 http://blog.csdn.net/Panda_m/article/details/50084699
CSS选择器详解 之 伪类 伪类对大小写不敏感 结构伪类选择器 结构伪类是CSS3新增的类型选择器,利用DOM树实现元素过滤,通过文档结构的相互关系来匹配元素,可以减少class和id属性的定义,使文 ...
- 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析
第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...
随机推荐
- 用jQuery修改右键菜单
概述 以前在网上找过屏蔽右键菜单的代码,也找过屏蔽F12的代码,今天无意之中看到别人的右键菜单很有意思,我也想来搞一个. 思路 建立一个菜单并且隐藏起来. 用window.oncontextmenu屏 ...
- scikit-image 图像处理库介绍
今天学习图像处理的时候,无意中看到了scikit 软件包,抱着学习的态度,这里做个记录,方便以后翻阅. 概念:scikit-image 是一种开源的用于图像处理的 Python 包.它包括分割,几何变 ...
- Git查看远程提交状态的方法
git使用过程中,经常遇到这样的问题,已经git push 了,但是,由于冲突或者push的分支不对,导致远程的和本地的不一致. 这就需要提交后查看一下远程的是否ok. 查了一下资料,找到了一些方法, ...
- centos7使用lldb调试netcore应用转储dump文件
centos7下安装lldb,dotnet netcore 进程生成转储文件,并使用lldb进行分析 随着netcore应用在linux上部署的应用越来越多,碰到cpu 100%,内存暴涨的情况也一直 ...
- python多线程获取子线程任务返回值
今天想实现多线程更新资产信息,所以使用到了threading,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 def auto_asset(node): re ...
- Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
Git使用教程:最详细.最傻瓜.最浅显.真正手把手教! 蘇小小 Web项目聚集地 9月16日 作者 | 蘇小小 编辑 | 王久一 来源 | 慕课网 导读:因为教程详细,所以行文有些长,新手边看边操作效 ...
- odoo开发笔记 -- 多对多字段追加数据
正常赋值操作: (以某个模型对象的附件为例) , , attach_ids)] 其中,attach_ids为附件对象id列表. 追加更新操作: 直接追加方式,没有找到;间接实现,每次更新前,去查询附件 ...
- Docker总结(脑图图片)
- Linux编程 5 (目录重命名与移动mv,删除文件rm,目录创建mkdir删除rmdir,查看file,cat,more,tail,head)
一. 文件重命名与移动(mv) 在linux中,重命名文件称为移动(moving).mv命令可以将文件和目录移动到另一个位置或重新命名. 1.1 使用mv重命名 下面在/usr/local下面创建一个 ...
- Redis 内存模型
了解 Redis 的 5 种对象类型(字符串.哈希.列表.集合.有序集合)的用法和特点的基础,了解 Redis 的内存模型,对 Redis 的使用有很大帮助,例如: 估算 Redis 内存使用量.内存 ...