是因为朝左上、右上、左下 三个方向,相对于起始点坐标系有所变化,所以在Draw方法中需按情况讨论:
if ((startPoint.getX() <= endPoint.getX() && startPoint.getY() <= endPoint.getY())) { rect = new RectF(startPoint.getX(), startPoint.getY(), endPoint.getX(), endPoint.getY()); } else if ((startPoint.getX() <= endPoint.getX() && startPoint.getY() >= endPoint.getY())) { rect = new RectF(startPoint.getX(), endPoint.getY(), endPoint.getX(), startPoint.getY()); } else if ((startPoint.getX() > endPoint.getX() && startPoint.getY() > endPoint.getY())) { rect = new RectF(endPoint.getX(), endPoint.getY(), startPoint.getX(), startPoint.getY()); } else if ((startPoint.getX() > endPoint.getX() && startPoint.getY() < endPoint.getY())) { rect = new RectF(endPoint.getX(), startPoint.getY(), startPoint.getX(), endPoint.getY()); }