public abstract class Shape
extends Object
implements Cloneable
java.lang.Object | |
↳ | android.graphics.drawable.shapes.Shape |
Known Direct Subclasses |
Known Indirect Subclasses |
定义一个通用的图形“形状”。 任何形状都可以用自己的draw()方法绘制到画布上,但如果将其传递给ShapeDrawable
则可以使用更多的图形控制。
Public constructors |
|
---|---|
Shape() |
Public methods |
|
---|---|
Shape |
clone() 创建并返回此对象的副本。 |
abstract void |
draw(Canvas canvas, Paint paint) 使用提供的Paint将此形状绘制到提供的Canvas中。 |
final float |
getHeight() 返回Shape的高度。 |
void |
getOutline(Outline outline) 计算形状的轮廓并将其返回到提供的大纲参数中。 |
final float |
getWidth() 返回Shape的宽度。 |
boolean |
hasAlpha() 检查Shape是否不透明。 |
final void |
resize(float width, float height) 调整此形状的尺寸。 |
Protected methods |
|
---|---|
void |
onResize(float width, float height) 执行 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
Shape clone ()
创建并返回此对象的副本。 “复制”的确切含义可能取决于对象的类别。 一般意图是,对于任何对象x
,表达式:
will be true, and that the expression:x.clone() != x
will bex.clone().getClass() == x.getClass()
true
, but these are not absolute requirements. While it is typically the case that:
will bex.clone().equals(x)
true
, this is not an absolute requirement.
按照惯例,返回的对象应该通过调用super.clone
获得。 如果一个类和它的所有超类( Object
除外)遵守这个约定,那么情况就是x.clone().getClass() == x.getClass()
。
按照惯例,这个方法返回的对象应该独立于这个对象(被克隆)。 为了实现这种独立性,可能需要在返回super.clone
之前修改返回的对象的一个或多个字段。 通常,这意味着复制包含被克隆对象的内部“深层结构”的任何可变对象,并将这些对象的引用替换为对这些副本的引用。 如果一个类仅包含原始字段或对不可变对象的引用,那么通常情况下不需要修改由super.clone
返回的对象中的字段。
类Object
的方法clone
执行特定的克隆操作。 首先,如果该对象的类没有实现接口Cloneable
,则引发CloneNotSupportedException
。 请注意,所有阵列都被视为实现接口Cloneable
并且数组类型T[]
的clone
方法的返回类型为T[]
,其中T是任何引用或基本类型。 否则,此方法创建该对象的类的新实例,并使用该对象的相应字段的内容来初始化其所有字段,就像通过赋值一样; 这些字段的内容本身并不克隆。 因此,此方法执行此对象的“浅拷贝”,而不是“深拷贝”操作。
类 Object
本身并不实现接口 Cloneable
,所以在类为 Object
的对象上调用 clone
方法将导致在运行时抛出异常。
Returns | |
---|---|
Shape |
a clone of this instance. |
Throws | |
---|---|
CloneNotSupportedException |
void draw (Canvas canvas, Paint paint)
使用提供的Paint将此形状绘制到提供的Canvas中。 在致电之前,您必须致电resize(float, float)
。
Parameters | |
---|---|
canvas |
Canvas : the Canvas within which this shape should be drawn |
paint |
Paint : the Paint object that defines this shape's characteristics |
void getOutline (Outline outline)
计算形状的轮廓并将其返回到提供的大纲参数中。 默认实现什么也不做, outline
没有改变。
Parameters | |
---|---|
outline |
Outline : The Outline to be populated with the result. Should not be null. |
boolean hasAlpha ()
检查Shape是否不透明。 默认impl返回true。 覆盖,如果你的子类可能是不透明的。
Returns | |
---|---|
boolean |
true if any part of the drawable is not opaque. |
void resize (float width, float height)
调整此形状的尺寸。 必须在draw(Canvas, Paint)
之前draw(Canvas, Paint)
。
Parameters | |
---|---|
width |
float : the width of the shape (in pixels) |
height |
float : the height of the shape (in pixels) |
void onResize (float width, float height)
执行 resize(float, float)
时 resize(float, float)
回调方法。
Parameters | |
---|---|
width |
float : the new width of the Shape |
height |
float : the new height of the Shape |