Android Rect相关方法
1.Rect
常用的一个“绘画相关的工具类”,常用来描述长方形/正方形,他只有4个属性:
public int left;
public int top;
public int right;
public int bottom;
这4个属性描述着这一个“方块”,但是这有一个知识点需要理清楚,先看这张图
本Rect最左侧到屏幕的左侧的距离是 left
本Rect最上面到屏幕上方的距离是 top
本Rect最右侧到屏幕左侧的距离是 right
本Rect最下面到屏幕上方的距离是 bottom
这四个属性不单单描述了这个长方形4个点的坐标,间接的描述出这个长方形的尺寸:
长 = bottom - top
宽 = right - left
2.常用方法
①public final boolean isEmpty () 如果矩形为空,则返回true(left >= right 或 top >= bottom)
public void setEmpty () 将矩形设置为(0,0,0,0)(left, top, right, bottom)
public final int height () 返回矩形的高度(这没有检查一个有效的矩形;即top <= bottom),所以结果可能是负的
public final int width () 返回矩形的宽度(这没有检查一个有效的矩形即left<=right),所以结果可能是负的
public String flattenToString () 返回矩形的字符串表示形式(左上右下)
public final int centerX () 获取矩阵中心点X轴上的坐标;如果值是小数,则返回小于值的最大整数(返回int类型)
public final int centerY () 获取矩阵中心点Y轴上的坐标;如果值是小数,则返回小于值的最大整数(返回int类型)
public boolean contains (int x, int y)如果(x,y)在矩形内,则返回true。注意:左侧和顶部被认为是内部,而右侧和底部则不是。x,y被包含:left<= x <right和top<= y <bottom(空矩形不包含任何点)
public boolean contains (int left, int top, int right, int bottom) 如果矩形的4条指定边在该矩形或等于该矩形,则返回true。注意:一个空矩形永远不会包含另一个矩形
public boolean contains (Rect r) 如果指定的矩形r在该矩形内或等于该矩形,则返回true。注意:一个空矩形永远不会包含另一个矩形
public boolean equals (Object o) 比较此实例与指定对象,并指示它们是否相等。如果指定的对象等于此对象,则为true;否则返回false
public void inset (int dx, int dy) 在矩形中插入(dx,dy)。dx/dy是正的,两边向内移动(使矩形变窄);dx/dy是负的,两边向外移动(使矩形变宽)
public boolean intersects (int left, int top, int right, int bottom) 如果此矩形与指定矩形相交,则返回true。注意:这个矩形在任何情况下都不会被修改;不执行检查矩形是否为空的操作;要记录交集,请使用intersect()/setIntersect()
public static boolean intersects (Rect a, Rect b) 如果两个指定矩形相交,则返回true。注意:在任何情况下,这两个矩形都不会被修改。
public boolean intersect (Rect r) 如果指定的矩形与此矩形相交,则返回true并将此矩形设置为该交集,否则返回false且不更改此矩形。注意:要测试交集,请使用intersects()
boolean setIntersect( Rect a, Rect b) 如果矩形a和b相交,返回true并将该矩形设置为该相交,否则返回false且不改变该矩形。注意:不执行检查矩形是否为空的操作;要测试交集,请使用intersects()
public void offset (int dx, int dy) 通过在X轴和Y轴上设置偏移量去移动矩形,也就是矩形的left和right坐标上加上dx,在top和bottom坐标上加上dy来偏移矩形
public void offsetTo (int newLeft, int newTop) 将矩形偏移到一个指定的位置(左上角),保持它的宽度和高度相同
public void set (int left, int top, int right, int bottom) 将矩形的坐标设置为指定值。注意:没有执行范围检查,确保left <= right和top <= bottom。
public void set (Rect src) 从src复制坐标到这个矩形中
public void sort () 如果可以翻转(即左>右和/或顶部>底)交换顶部/底部或左/右。注意: 如果边缘已经正确(即左<=右和顶<=底),则不执行任何操作
public void union (int left, int top, int right, int bottom) 更新此矩形为指定的矩形。注意: 如果指定的矩形为空,则不执行任何操作; 如果自身矩形为空,则将其设置为指定的矩形
void union( Rect r) 更新此矩形为指定的矩形。注意: 如果指定的矩形为空,则不执行任何操作; 如果自身矩形为空,则将其设置为指定的矩形
void union (int x, int y) 更新这个矩形,以包含它自己和[x,y]坐标。注意: 没有检查该矩形是否为非空
2.检测矩形是否相交
矩形的Rect.intersect(Rect a)方法是用来取两个矩形的相交部分,并设置给Rect。
@CheckResult
public boolean intersect(int left, int top, int right, int bottom) {
if (this.left < right && left < this.right && this.top < bottom && top < this.bottom) {
if (this.left < left) this.left = left;
if (this.top < top) this.top = top;
if (this.right > right) this.right = right;
if (this.bottom > bottom) this.bottom = bottom;
return true;
}
return false;
}
静态方法检测矩形是否相交:
public static boolean intersects(Rect a, Rect b)
实例变量检测是否相交:
public boolean intersect(Rect r)
实例变量和静态变量检测是否相交的区别在于,实例变量检测是否相交并不会把相交矩形返回,而实例变量则会矩形返回。
举个例子:
原图,相交的两个矩形(rect_1、rect_2):
当调用rect_1.intersect(rect_2)后,则rect_1变成下图中绿色矩形:
3.合并矩形
public void union(Rect r)
取矩形最小左上角,最大右下角点为基准,绘制矩形。效果图:
Android Rect相关方法相关推荐
- android Rect类的使用
今天,讲讲Android的Rect类的使用. public final class Rect extends Object implements Parcelable java.lang.Object ...
- android Rect的使用
转:http://byandby.javaeye.com/blog/826230 Java代码 1. //绘制矩形 2. canvas.drawRect(new Rect(150, 75, ...
- Android Rect 的使用以及与RectF的区别
Rect 保存矩形的四个整数坐标.矩形是由四条边(左.上.右下)的坐标表示, 绘制矩形的时候用得到 // 设置抗锯齿效果 true是去边缘会将锯齿模糊化paint.setAntiAlias(true) ...
- jni android rect.h,解决 fatal error: jni_md.h: No such file or directory #include “jni_md.h”
在Linux系统下使用jdk1.8编译项目时,遇到如下问题: 原因: 好像是#include "jni_md.h"会将文件包含在与jni.h相同的目录中,但是现在找不到了. 解决办 ...
- Rect、RectF矩形类
1:Rect介绍 Rect.RectF都表示矩形类,他由4个坐标(left,top,right,bottom) 来组成一个矩形,在 android中很多地方都用到矩形,用他来确定位置这是android ...
- Android TextView 使用以及属性(方法)大全
TextView是什么 向用户显示文本,并可选择允许他们编辑文本.TextView是一个完整的文本编辑器,但是基类为不允许编辑:其子类EditText允许文本编辑. 咱们先上一个图看看TextView ...
- Android tombstone 分析案例
Android tombstone 分析案例 tombstone文件内容 1. 体系结构 2. 发生Crash线程 3. 原因 4. 寄存器状态 4.1 处理器工作模式下的寄存器 4.2 未分组寄存器 ...
- Xamarin 总结 (官方文档笔记)
1. ContentDescription 一个 属性,供屏幕读取 API 使用,以提供控件用途的可访问说明. <ImageButtonandroid:id=@+id/saveButton&qu ...
- Unity之手机键盘自定义输入栏位置适配不同手机分辨率适配
Unity之手机键盘自定义输入栏位置适配&不同手机分辨率适配 效果图 PC端展示 手机端展示(手机是顶部带摄像头的IQOO Neo 5 ) 设计思路 也没啥思路不思路的,就是获取键盘高度,在安 ...
最新文章
- ubuntu 12.04 clang 3.4 安装
- 初学ctypes:打开进程并返回相关信息
- 自定义ArrayList
- EmguCV 一些基本操作
- LeetCode MySQL刷题——day1
- Python实现单向链表
- gtk学习总结:GTK从入门到放弃,三天包教包会
- VB代码VB小程序:实现USB摄像头视频图像的监控、截图、录像
- html设计学校网站,基于HTML5的学校网站设计.doc
- 小甲鱼 C语言 帮助社区大妈编写一个打疫苗登记程序
- 修改树莓派默认密码及切换root账号
- 商业创新奇才,巧用大数据分析带你穿越古代当首富
- python 暑期培训
- OpenStack--炼数成金
- 如何快速批量修改图片名称?
- 2022-2027年中国巴西鲷鱼养殖行业市场调研及未来发展趋势预测报告
- rust guessing game
- 常见对称加密原理以及应用
- PTA 数据结构与算法 7-29 修理牧场
- 页面提交成功后,弹窗提示
热门文章
- 计算机组老师颁奖词,学生表彰颁奖词与学生计算机室管理制度合集.doc
- 一文搞懂H264量化原理以及计算过程
- Kubernetes入门一:介绍及环境准备
- adc量化单位_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENO...
- java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署
- 计算机往届生考研失败找工作,考研二战失败如何找工作 考研往届生找工作的方法...
- python面向对象编程实例pdf_Python面向对象编程指南 ([美]StevenFLott洛特) 中文pdf扫描版[52MB]...
- Appium JAVA ios 设备 AUT not install
- 2D Pose人体关键点实时检测(Python/Android /C++ Demo)
- Anaconda安装中failed to create menus