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相关方法相关推荐

  1. android Rect类的使用

    今天,讲讲Android的Rect类的使用. public final class Rect extends Object implements Parcelable java.lang.Object ...

  2. android Rect的使用

    转:http://byandby.javaeye.com/blog/826230 Java代码  1.   //绘制矩形 2.   canvas.drawRect(new Rect(150, 75,  ...

  3. Android Rect 的使用以及与RectF的区别

    Rect 保存矩形的四个整数坐标.矩形是由四条边(左.上.右下)的坐标表示, 绘制矩形的时候用得到 // 设置抗锯齿效果 true是去边缘会将锯齿模糊化paint.setAntiAlias(true) ...

  4. 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相同的目录中,但是现在找不到了. 解决办 ...

  5. Rect、RectF矩形类

    1:Rect介绍 Rect.RectF都表示矩形类,他由4个坐标(left,top,right,bottom) 来组成一个矩形,在 android中很多地方都用到矩形,用他来确定位置这是android ...

  6. Android TextView 使用以及属性(方法)大全

    TextView是什么 向用户显示文本,并可选择允许他们编辑文本.TextView是一个完整的文本编辑器,但是基类为不允许编辑:其子类EditText允许文本编辑. 咱们先上一个图看看TextView ...

  7. Android tombstone 分析案例

    Android tombstone 分析案例 tombstone文件内容 1. 体系结构 2. 发生Crash线程 3. 原因 4. 寄存器状态 4.1 处理器工作模式下的寄存器 4.2 未分组寄存器 ...

  8. Xamarin 总结 (官方文档笔记)

    1. ContentDescription 一个 属性,供屏幕读取 API 使用,以提供控件用途的可访问说明. <ImageButtonandroid:id=@+id/saveButton&qu ...

  9. Unity之手机键盘自定义输入栏位置适配不同手机分辨率适配

    Unity之手机键盘自定义输入栏位置适配&不同手机分辨率适配 效果图 PC端展示 手机端展示(手机是顶部带摄像头的IQOO Neo 5 ) 设计思路 也没啥思路不思路的,就是获取键盘高度,在安 ...

最新文章

  1. ubuntu 12.04 clang 3.4 安装
  2. 初学ctypes:打开进程并返回相关信息
  3. 自定义ArrayList
  4. EmguCV 一些基本操作
  5. LeetCode MySQL刷题——day1
  6. Python实现单向链表
  7. gtk学习总结:GTK从入门到放弃,三天包教包会
  8. VB代码VB小程序:实现USB摄像头视频图像的监控、截图、录像
  9. html设计学校网站,基于HTML5的学校网站设计.doc
  10. 小甲鱼 C语言 帮助社区大妈编写一个打疫苗登记程序
  11. 修改树莓派默认密码及切换root账号
  12. 商业创新奇才,巧用大数据分析带你穿越古代当首富
  13. python 暑期培训
  14. OpenStack--炼数成金
  15. 如何快速批量修改图片名称?
  16. 2022-2027年中国巴西鲷鱼养殖行业市场调研及未来发展趋势预测报告
  17. rust guessing game
  18. 常见对称加密原理以及应用
  19. PTA 数据结构与算法 7-29 修理牧场
  20. 页面提交成功后,弹窗提示

热门文章

  1. 计算机组老师颁奖词,学生表彰颁奖词与学生计算机室管理制度合集.doc
  2. 一文搞懂H264量化原理以及计算过程
  3. Kubernetes入门一:介绍及环境准备
  4. adc量化单位_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENO...
  5. java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  6. 计算机往届生考研失败找工作,考研二战失败如何找工作 考研往届生找工作的方法...
  7. python面向对象编程实例pdf_Python面向对象编程指南 ([美]StevenFLott洛特) 中文pdf扫描版[52MB]...
  8. Appium JAVA ios 设备 AUT not install
  9. 2D Pose人体关键点实时检测(Python/Android /C++ Demo)
  10. Anaconda安装中failed to create menus