public class Path extends Object
Modifier and Type  Class and Description 

static class 
Path.Direction
Specifies how closed shapes (e.g.

static class 
Path.FillType
Enum for the ways a path may be filled

Modifier and Type  Field and Description 

boolean 
isSimplePath 
int 
mNativePath 
Region 
rects 
Constructor and Description 

Path()
Create an empty path

Path(Path src)
Create a new path, copying the contents from the src path.

Modifier and Type  Method and Description 

void 
addArc(RectF oval,
float startAngle,
float sweepAngle)
Add the specified arc to the path as a new contour.

void 
addCircle(float x,
float y,
float radius,
Path.Direction dir)
Add a closed circle contour to the path

void 
addOval(RectF oval,
Path.Direction dir)
Add a closed oval contour to the path

void 
addPath(Path src)
Add a copy of src to the path

void 
addPath(Path src,
float dx,
float dy)
Add a copy of src to the path, offset by (dx,dy)

void 
addPath(Path src,
Matrix matrix)
Add a copy of src to the path, transformed by matrix

void 
addRect(float left,
float top,
float right,
float bottom,
Path.Direction dir)
Add a closed rectangle contour to the path

void 
addRect(RectF rect,
Path.Direction dir)
Add a closed rectangle contour to the path

void 
addRoundRect(RectF rect,
float[] radii,
Path.Direction dir)
Add a closed roundrectangle contour to the path.

void 
addRoundRect(RectF rect,
float rx,
float ry,
Path.Direction dir)
Add a closed roundrectangle contour to the path

void 
arcTo(RectF oval,
float startAngle,
float sweepAngle)
Append the specified arc to the path as a new contour.

void 
arcTo(RectF oval,
float startAngle,
float sweepAngle,
boolean forceMoveTo)
Append the specified arc to the path as a new contour.

void 
close()
Close the current contour.

void 
computeBounds(RectF bounds,
boolean exact)
Compute the bounds of the control points of the path, and write the
answer into bounds.

void 
cubicTo(float x1,
float y1,
float x2,
float y2,
float x3,
float y3)
Add a cubic bezier from the last point, approaching control points
(x1,y1) and (x2,y2), and ending at (x3,y3).

protected void 
finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.

Path.FillType 
getFillType()
Return the path's fill type.

void 
incReserve(int extraPtCount)
Hint to the path to prepare for adding more points.

boolean 
isEmpty()
Returns true if the path is empty (contains no lines or curves)

boolean 
isInverseFillType()
Returns true if the filltype is one of the INVERSE variants

boolean 
isRect(RectF rect)
Returns true if the path specifies a rectangle.

void 
lineTo(float x,
float y)
Add a line from the last point to the specified point (x,y).

void 
moveTo(float x,
float y)
Set the beginning of the next contour to the point (x,y).

void 
offset(float dx,
float dy)
Offset the path by (dx,dy), returning true on success

void 
offset(float dx,
float dy,
Path dst)
Offset the path by (dx,dy), returning true on success

void 
quadTo(float x1,
float y1,
float x2,
float y2)
Add a quadratic bezier from the last point, approaching control point
(x1,y1), and ending at (x2,y2).

void 
rCubicTo(float x1,
float y1,
float x2,
float y2,
float x3,
float y3)
Same as cubicTo, but the coordinates are considered relative to the
current point on this contour.

void 
reset()
Clear any lines and curves from the path, making it empty.

void 
rewind()
Rewinds the path: clears any lines and curves from the path but
keeps the internal data structure for faster reuse.

void 
rLineTo(float dx,
float dy)
Same as lineTo, but the coordinates are considered relative to the last
point on this contour.

void 
rMoveTo(float dx,
float dy)
Set the beginning of the next contour relative to the last point on the
previous contour.

void 
rQuadTo(float dx1,
float dy1,
float dx2,
float dy2)
Same as quadTo, but the coordinates are considered relative to the last
point on this contour.

void 
set(Path src)
Replace the contents of this with the contents of src.

void 
setFillType(Path.FillType ft)
Set the path's fill type.

void 
setLastPoint(float dx,
float dy)
Sets the last point of the path.

void 
toggleInverseFillType()
Toggles the INVERSE state of the filltype

void 
transform(Matrix matrix)
Transform the points in this path by matrix.

void 
transform(Matrix matrix,
Path dst)
Transform the points in this path by matrix, and write the answer
into dst.

public final int mNativePath
public boolean isSimplePath
public Region rects
public Path()
public Path(Path src)
src
 The path to copy from when initializing the new pathpublic void reset()
public void rewind()
public void set(Path src)
public Path.FillType getFillType()
public void setFillType(Path.FillType ft)
ft
 The new fill type for this pathpublic boolean isInverseFillType()
public void toggleInverseFillType()
public boolean isEmpty()
public boolean isRect(RectF rect)
rect
 If not null, returns the bounds of the path if it specifies
a rectanglepublic void computeBounds(RectF bounds, boolean exact)
bounds
 Returns the computed bounds of the path's control points.exact
 This parameter is no longer used.public void incReserve(int extraPtCount)
extraPtCount
 The number of extra points that may be added to this
pathpublic void moveTo(float x, float y)
x
 The xcoordinate of the start of a new contoury
 The ycoordinate of the start of a new contourpublic void rMoveTo(float dx, float dy)
dx
 The amount to add to the xcoordinate of the end of the
previous contour, to specify the start of a new contourdy
 The amount to add to the ycoordinate of the end of the
previous contour, to specify the start of a new contourpublic void lineTo(float x, float y)
x
 The xcoordinate of the end of a liney
 The ycoordinate of the end of a linepublic void rLineTo(float dx, float dy)
dx
 The amount to add to the xcoordinate of the previous point on
this contour, to specify a linedy
 The amount to add to the ycoordinate of the previous point on
this contour, to specify a linepublic void quadTo(float x1, float y1, float x2, float y2)
x1
 The xcoordinate of the control point on a quadratic curvey1
 The ycoordinate of the control point on a quadratic curvex2
 The xcoordinate of the end point on a quadratic curvey2
 The ycoordinate of the end point on a quadratic curvepublic void rQuadTo(float dx1, float dy1, float dx2, float dy2)
dx1
 The amount to add to the xcoordinate of the last point on
this contour, for the control point of a quadratic curvedy1
 The amount to add to the ycoordinate of the last point on
this contour, for the control point of a quadratic curvedx2
 The amount to add to the xcoordinate of the last point on
this contour, for the end point of a quadratic curvedy2
 The amount to add to the ycoordinate of the last point on
this contour, for the end point of a quadratic curvepublic void cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)
x1
 The xcoordinate of the 1st control point on a cubic curvey1
 The ycoordinate of the 1st control point on a cubic curvex2
 The xcoordinate of the 2nd control point on a cubic curvey2
 The ycoordinate of the 2nd control point on a cubic curvex3
 The xcoordinate of the end point on a cubic curvey3
 The ycoordinate of the end point on a cubic curvepublic void rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3)
public void arcTo(RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo)
oval
 The bounds of oval defining shape and size of the arcstartAngle
 Starting angle (in degrees) where the arc beginssweepAngle
 Sweep angle (in degrees) measured clockwise, treated
mod 360.forceMoveTo
 If true, always begin a new contour with the arcpublic void arcTo(RectF oval, float startAngle, float sweepAngle)
oval
 The bounds of oval defining shape and size of the arcstartAngle
 Starting angle (in degrees) where the arc beginssweepAngle
 Sweep angle (in degrees) measured clockwisepublic void close()
public void addRect(RectF rect, Path.Direction dir)
rect
 The rectangle to add as a closed contour to the pathdir
 The direction to wind the rectangle's contourpublic void addRect(float left, float top, float right, float bottom, Path.Direction dir)
left
 The left side of a rectangle to add to the pathtop
 The top of a rectangle to add to the pathright
 The right side of a rectangle to add to the pathbottom
 The bottom of a rectangle to add to the pathdir
 The direction to wind the rectangle's contourpublic void addOval(RectF oval, Path.Direction dir)
oval
 The bounds of the oval to add as a closed contour to the pathdir
 The direction to wind the oval's contourpublic void addCircle(float x, float y, float radius, Path.Direction dir)
x
 The xcoordinate of the center of a circle to add to the pathy
 The ycoordinate of the center of a circle to add to the pathradius
 The radius of a circle to add to the pathdir
 The direction to wind the circle's contourpublic void addArc(RectF oval, float startAngle, float sweepAngle)
oval
 The bounds of oval defining the shape and size of the arcstartAngle
 Starting angle (in degrees) where the arc beginssweepAngle
 Sweep angle (in degrees) measured clockwisepublic void addRoundRect(RectF rect, float rx, float ry, Path.Direction dir)
rect
 The bounds of a roundrectangle to add to the pathrx
 The xradius of the rounded corners on the roundrectanglery
 The yradius of the rounded corners on the roundrectangledir
 The direction to wind the roundrectangle's contourpublic void addRoundRect(RectF rect, float[] radii, Path.Direction dir)
rect
 The bounds of a roundrectangle to add to the pathradii
 Array of 8 values, 4 pairs of [X,Y] radiidir
 The direction to wind the roundrectangle's contourpublic void addPath(Path src, float dx, float dy)
src
 The path to add as a new contourdx
 The amount to translate the path in X as it is addedpublic void addPath(Path src)
src
 The path that is appended to the current pathpublic void addPath(Path src, Matrix matrix)
src
 The path to add as a new contourpublic void offset(float dx, float dy, Path dst)
dx
 The amount in the X direction to offset the entire pathdy
 The amount in the Y direction to offset the entire pathdst
 The translated path is written here. If this is null, then
the original path is modified.public void offset(float dx, float dy)
dx
 The amount in the X direction to offset the entire pathdy
 The amount in the Y direction to offset the entire pathpublic void setLastPoint(float dx, float dy)
dx
 The new X coordinate for the last pointdy
 The new Y coordinate for the last pointpublic void transform(Matrix matrix, Path dst)
matrix
 The matrix to apply to the pathdst
 The transformed path is written here. If dst is null,
then the the original path is modifiedpublic void transform(Matrix matrix)
matrix
 The matrix to apply to the pathprotected void finalize() throws Throwable
Object
Note that objects that override finalize
are significantly more expensive than
objects that don't. Finalizers may be run a long time after the object is no longer
reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup.
Note also that finalizers are run on a single VMwide finalizer thread,
so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary
for a class that has a native peer and needs to call a native method to destroy that peer.
Even then, it's better to provide an explicit close
method (and implement
Closeable
), and insist that callers manually dispose of instances. This
works well for something like files, but less well for something like a BigInteger
where typical calling code would have to deal with lots of temporaries. Unfortunately,
code that creates lots of temporaries is the worst kind of code from the point of view of
the single finalizer thread.
If you must use finalizers, consider at least providing your own
ReferenceQueue
and having your own thread process that queue.
Unlike constructors, finalizers are not automatically chained. You are responsible for
calling super.finalize()
yourself.
Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See Effective Java Item 7, "Avoid finalizers" for more.