Android Rect

转载:(3条消息) Android Rect介绍_天凉好个秋·的博客-CSDN博客_android rect

今天,讲讲Android的Rect类的使用。


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 ()获取矩阵中心点(x,y)
final int    centerY()
boolean    contains (int x, int y)是否包含(x,y)点
Returns true if (x,y) is inside the rectangle.
boolean    contains(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.
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()该方法和CenterX()类似,只是该方法精确度比它高(返回float类型)
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)该矩阵在x轴和y轴分别发生的偏移量(很有用,可以上下移动矩阵)
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)保持矩阵的宽高,矩阵的左上角偏移到(newLeft,newTop)该点
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)  

  这个构造方法需要四个参数这四个参数 指明了什么位置 ?我们就来解释怎么画 这个 矩形 
这四个 参数 分别代表的意思是: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类型的

这里需要注意一点,Rect类主要用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作。这块矩形区域,需要用左上右下两个坐标点表示(left,top,right,bottom),你也可以获取一个Rect实例的Width和Height。就在这里,奇葩的事情来了,作为一个有一点经验的做图像或者矩阵运算或者编程的程序员来说,大家的共识是,如果一个矩阵是MxN的,也就是M行N列,那么行号是[0,M-1],列号是[0,N-1]。可是奇葩的Rect类并不是这样的!如果你这么声明一个Rect类:
Rect rect= new Rect( 100 , 50 , 300 , 500 );
那么右下角(300,500)其实是不在这个矩形里面的,但是左上角(100,50)在,也就是说,这个矩形实际表示的区域是:(100,50,299,499)。另外,Rect计算出的Height和Width倒是对的。所以,在此告诫各位程序员,在涉及Rect运算的时候,尽量不要使用它的右下角左边,即right和bottom。因为他们是错的。当然,在你调用android自己的函数时,是可以使用的,因为Android里面一直保持这么奇葩的思维。


android Rect类的使用就讲完了。

就这么简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值