Rect、RectF矩形类

1:Rect介绍

Rect、RectF都表示矩形类,他由4个坐标(left,top,right,bottom) 来组成一个矩形,在 android中很多地方都用到矩形,用他来确定位置这是android中常用的手法
(0,0,100,100)表示在原点开始组成一个长宽为100,100的矩形
(10,30,110,100)表示组成一个长为(110-10)宽为(100-30)的矩形

2:Rect相关方法
  • 1:构造函数
    new Rect()创建一个空矩形对象,new Rect(Rect r)指定一个矩形来创建新的矩形对象
    new Rect(int left, int top, int right, int bottom)指定4个坐标创建矩形对象

  • 2:方法介绍

获取矩形的中心点

int centerX()、int centeY(),获取的int值 float exactCenterX()、float
exactCenterY()同上获取的是float类型值,精确些

判断坐标是否是在矩形内

boolean contains(int x, int y) :给定的xy是否在矩形内 contains(int left, int
top, int right, int bottom) 给顶的4个点是否在矩形内 contains(Rect r)
给顶的矩形是否在矩形内,或者是等于当前矩形大小

通过一个字符串来表示已有的矩形

String flattenToString()、 Rect unflattenFromString(String s)
flattenToString()通过一个字符串来表示已有的矩形,这个字符串其实包含了4个坐标
unflattenFromString(String str):通过字符串获取矩形

Rect rect=new Rect(10,10,110,100); //创建一个矩形
String s= rect.flattenToString();//通过flattenToString()获取一个字符串
Rect news=Rect.unflattenFromString(s);//通过获取的字符串再获取到一个矩形

toShortString ():和flattenToString一样只是返回的字符串形式不一样
toShortString()返回回来是[10,10][10,10]形式, flattenToString是 10 10 10 10形式

获取矩形的宽高

int height()、int width()

改变矩形原有坐标进行内部移动

inset(int dx, int dy)

有一矩形new Rect(0,0,300,300,) 执行inset(100,0) 后矩形为(100,0,200,100)
这个方法意思是dx:在矩形的lef,right向矩形内部各移动100 原始left为0,dx为100故在矩形内移动100,0+100=100
原始right为300,dx为100在矩形内移动100,300-100=200
总结:注意矩形内移动,即right点是向左边移动100,如果向右边方向移动100,那是在矩形外了。故dx为负数,就是lef
和right向矩形外部移动100,dy同理

判断2个矩形是否相交,2个矩形有交集,或者一个包含另外一个都为true

boolean intersect(Rect r)、boolean intersect(int left, int top, int
right, int bottom) boolean intersects(Rect a, Rect b)、intersects(int
left, int top, int right, int bottom) boolean setIntersect(Rect a,
Rect b)

判断矩形是否为null,没设置坐标为null

isEmpty ()

矩形偏移,移动矩形不会改变矩形本身的宽高值

offset(dx,dy):矩形在原位置上再偏移dx、dy个像素 offsetTo(int newLeft, int newTop)
这个是给定新的值直接偏移,不考虑源位置 比如现在坐标是(10,10,10,10) 我们用offsetTo(100,100)那么直接变成
(100,100,10,10)而不是像offset是相对于原坐标偏移,如果是offset来偏移那结果 (110,110,10,10)

设置已有矩形的值,设置之后会采用新的矩形值,注意值传递正确,2个方法进行检查

set(int left, int top, int right, int bottom)、set(Rect rect)

Rect rect=new Rect(10,10,310,310);
rect.set(20,10,300,200);
canvas.drawRect(rect, paint);
//如上创建一个矩形宽高是300,用了set方法后矩形宽高变为280,
//190新绘制出来的矩形宽高就变成了280,190,不再是原来的矩形

改变矩形值,这个方法和上每年的set(…)方法功能一样

union(Rect r)、union(int left, int top, int right, int bottom)、
union(int x, int y)

3:RectF 和Rect类似F代表float!只是多了2个方法!略

你可能感兴趣的:(Android)