Today, let's talk about the use of Android's Rect class.
public final class
Rect
extends Object
implements Parcelable
java.lang.Object | |
↳ | android.graphics.Rect |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Rect()
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 Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
final int | centerX () gets the matrix center point (x, y) | ||||||||||
final int | centerY() | ||||||||||
boolean | contains (int x, int y) whether to contain the (x, y) point
Returns true if (x,y) is inside the rectangle.
|
||||||||||
boolean | contains (int left, int top, int right, int bottom) whether to contain ( int left, int top, int right, int bottom ) matrix
Returns true iff the 4 specified sides of a rectangle are inside or equal to this rectangle.
|
||||||||||
boolean | contains(Rect r)
Returns true iff the specified rectangle r is inside or equal to this rectangle.
|
||||||||||
int | describeContents()
Parcelable interface methods
|
||||||||||
boolean | equals(Object obj)
Compares this instance with the specified object and indicates if they are equal.
|
||||||||||
final float | exactCenterX () This method is similar to CenterX(), but this method is more accurate (returns float type) | ||||||||||
final float | exactCenterY() | ||||||||||
String | flattenToString()
Return a string representation of the rectangle in a well-defined format.
|
||||||||||
final int | height() | ||||||||||
void | inset(int dx, int dy)
Inset the rectangle by (dx,dy).
|
||||||||||
boolean | intersect(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.
|
||||||||||
boolean | intersect(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.
|
||||||||||
boolean | intersects(int left, int top, int right, int bottom)
Returns true if this rectangle intersects the specified rectangle.
|
||||||||||
static boolean | intersects(Rect a, Rect b)
Returns true iff the two specified rectangles intersect.
|
||||||||||
final boolean | isEmpty()
Returns true if the rectangle is empty (left >= right or top >= bottom)
|
||||||||||
void | offset (int dx, int dy) The offset of the matrix in the x-axis and y-axis respectively (very useful, you can move the matrix up and down)
Offset the rectangle by adding dx to its left and right coordinates, and adding dy to its top and bottom coordinates.
|
||||||||||
void | offsetTo (int newLeft, int newTop) maintains the width and height of the matrix, and the upper left corner of the matrix is offset to (newLeft, newTop) this point
Offset the rectangle to a specific (left, top) position, keeping its width and height the same.
|
||||||||||
void | readFromParcel(Parcel in)
Set the rectangle's coordinates from the data stored in the specified parcel.
|
||||||||||
void | set(int left, int top, int right, int bottom)
Set the rectangle's coordinates to the specified values.
|
||||||||||
void | set(Rect src)
Copy the coordinates from src into this rectangle.
|
||||||||||
void | setEmpty ()
Set the rectangle to (0,0,0,0)
|
||||||||||
boolean | setIntersect(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.
|
||||||||||
void | sort()
Swap top/bottom or left/right if there are flipped (i.e.
|
||||||||||
String | toShortString()
Return a string representation of the rectangle in a compact form.
|
||||||||||
String | toString()
Returns a string containing a concise, human-readable description of this object.
|
||||||||||
static Rect | unflattenFromString(String str)
Returns a Rect from a string of the form returned by
flattenToString()
, or null if the string is not of that form.
|
||||||||||
void | union(int left, int top, int right, int bottom)
Update this Rect to enclose itself and the specified rectangle.
|
||||||||||
void | union(Rect r)
Update this Rect to enclose itself and the specified rectangle.
|
||||||||||
void | union(int x, int y)
Update this Rect to enclose itself and the [x,y] coordinate.
|
||||||||||
final int | width() | ||||||||||
void | writeToParcel(Parcel out, int flags)
Write this rectangle to the specified parcel.
|
1. new Rect(150, 75, 260, 120)
This constructor requires four parameters. What do these four parameters indicate ? Let's explain how to draw this rectangle . The four parameters represent: left top right bottom , up, down, left and right. Ah, not top left and bottom right . Let me explain left : the X coordinate of the left side of the rectangle 150 top: the Y coordinate of the top of the rectangle 75 right: the X coordinate of the right side of the rectangle 260 bottom : the Y coordinate of the bottom of the rectangle 120
To put it bluntly, the coordinates of the upper left corner are (150,75), and the coordinates of the lower right corner are (260,120), so it is easy to understand
Rect rect=
new
Rect(
100
,
50
,
300
,
500
);
|
那么右下角(300,500)其实是不在这个矩形里面的,但是左上角(100,50)在,也就是说,这个矩形实际表示的区域是:(100,50,299,499)。另外,Rect计算出的Height和Width倒是对的。所以,在此告诫各位程序员,在涉及Rect运算的时候,尽量不要使用它的右下角左边,即right和bottom。因为他们是错的。当然,在你调用android自己的函数时,是可以使用的,因为Android里面一直保持这么奇葩的思维。