android.graphics.Rect类的详解

来源:互联网 发布:xml与java 编辑:程序博客网 时间:2024/04/30 09:14
public final class

Rect

extends Object
implements Parcelable
java.lang.Object   ↳android.graphics.Rect
Public ConstructorsRect()
Create a new empty Rect.
Rect(int left, int top, int right, int bottom)
Create a new rectangle with the specified coordinates.
Rect(Rect r)
Create a new rectangle, initialized with the values in the specified rectangle (which is left unmodified).
Public Methodsfinal intcenterX()获取矩阵中心点(x,y)final intcenterY()booleancontains(int x, int y)是否包含(x,y)点
Returns true if (x,y) is inside the rectangle.
booleancontains(int left, int top, int right, int bottom)是否包含(int left, int top, int right, int bottom)矩阵
Returns true iff the 4 specified sides of a rectangle are inside or equal to this rectangle.
booleancontains(Rect r)
Returns true iff the specified rectangle r is inside or equal to this rectangle.
intdescribeContents()
Parcelable interface methods
booleanequals(Object obj)
Compares this instance with the specified object and indicates if they are equal.
final floatexactCenterX()该方法和CenterX()类似,只是该方法精确度比它高(返回float类型)final floatexactCenterY()StringflattenToString()
Return a string representation of the rectangle in a well-defined format.
final intheight()voidinset(int dx, int dy)
Inset the rectangle by (dx,dy).
booleanintersect(Rect r)
If the specified rectangle intersects this rectangle, return true and set this rectangle to that intersection, otherwise return false and do not change this rectangle.
booleanintersect(int left, int top, int right, int bottom)
If the rectangle specified by left,top,right,bottom intersects this rectangle, return true and set this rectangle to that intersection, otherwise return false and do not change this rectangle.
booleanintersects(int left, int top, int right, int bottom)
Returns true if this rectangle intersects the specified rectangle.
static booleanintersects(Rect a, Rect b)
Returns true iff the two specified rectangles intersect.
final booleanisEmpty()
Returns true if the rectangle is empty (left >= right or top >= bottom)
voidoffset(int dx, int dy)该矩阵在x轴和y轴分别发生的偏移量(很有用,可以上下移动矩阵)
Offset the rectangle by adding dx to its left and right coordinates, and adding dy to its top and bottom coordinates.
voidoffsetTo(int newLeft, int newTop)保持矩阵的宽高,矩阵的左上角偏移到(newLeft,newTop)该点
Offset the rectangle to a specific (left, top) position, keeping its width and height the same.
voidreadFromParcel(Parcel in)
Set the rectangle's coordinates from the data stored in the specified parcel.
voidset(int left, int top, int right, int bottom)
Set the rectangle's coordinates to the specified values.
voidset(Rect src)
Copy the coordinates from src into this rectangle.
voidsetEmpty()
Set the rectangle to (0,0,0,0)
booleansetIntersect(Rect a, Rect b)
If rectangles a and b intersect, return true and set this rectangle to that intersection, otherwise return false and do not change this rectangle.
voidsort()
Swap top/bottom or left/right if there are flipped (i.e.
StringtoShortString()
Return a string representation of the rectangle in a compact form.
StringtoString()
Returns a string containing a concise, human-readable description of this object.
static RectunflattenFromString(String str)
Returns a Rect from a string of the form returned by flattenToString(), or null if the string is not of that form.
voidunion(int left, int top, int right, int bottom)
Update this Rect to enclose itself and the specified rectangle.
voidunion(Rect r)
Update this Rect to enclose itself and the specified rectangle.
voidunion(int x, int y)
Update this Rect to enclose itself and the [x,y] coordinate.
final intwidth()voidwriteToParcel(Parcel out, int flags)
Write this rectangle to the specified parcel.

1.   new Rect(150, 75, 260, 120)  

  这个构造方法需要四个参数这四个参数 指明了什么位置 ?我们就来解释怎么画 这个 矩形 
这四个 参数 分别代表的意思是:left   top   right   bottom  上下左右呗。啊,不是     下。 下面给大家解释  
left  矩形左边的X坐标  150  
top:    矩形顶部的Y坐标   75     
right :  矩形右边的X坐标   260    
bottom 矩形底部的Y坐标 120    

说白了就是左上角的坐标是(150,75),右下角的坐标是(260,120),这样就好理解了


2、Rect类与RectF类(android.graphics.RectF)的区别??
答:主要还是在精度上的不同,他们分别是:int、float类型的








2 0