最近在工作中遇到了一些问题,总结下来就是Android中Rect这个类造成的。不得不说,不知道Android SDK的开发人员是怎么想的, 这个类设计的太奇葩了。首先介绍一下Rect类: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里面一直保持这么奇葩的思维。

更多相关文章

  1. Android绘制一条边为弧形的矩形
  2. Android实现指定区域截屏的实现
  3. Android shape实现订单卡片制作(shape画半圆及矩形圆角、渐变、虚
  4. Android调用系统Activity选取图像部分区域
  5. Android开发:布局分区域设置不同背景色
  6. Android前置摄像头预览并检测人脸,获取人脸区域亮度

随机推荐

  1. android Process.killProcess 和 System.
  2. SwipeRecyclerview使用中一些常见错误处
  3. 最新Android(安卓)4.x 搭建开发环境
  4. Android(安卓)厘米转dip、px转dip 地图比
  5. android studio 2.3 NDK
  6. android中的三种xml解析方法---sax解析,pu
  7. Android(安卓)自定义view 和 onMeasure方
  8. Android(安卓)快速开发之快速实现“我”
  9. [android] toast解析
  10. Android(安卓)Activity间的过渡动画