Methods Summary |
---|
public void | addCallback(android.view.SurfaceHolder$Callback callback)Add a Callback interface for this holder. There can several Callback
interfaces associated to a holder.
|
public Surface | getSurface()Direct access to the surface object. The Surface may not always be
available -- for example when using a {@link SurfaceView} the holder's
Surface is not created until the view has been attached to the window
manager and performed a layout in order to determine the dimensions
and screen position of the Surface. You will thus usually need
to implement {@link Callback#surfaceCreated Callback.surfaceCreated}
to find out when the Surface is available for use.
Note that if you directly access the Surface from another thread,
it is critical that you correctly implement
{@link Callback#surfaceCreated Callback.surfaceCreated} and
{@link Callback#surfaceDestroyed Callback.surfaceDestroyed} to ensure
that thread only accesses the Surface while it is valid, and that the
Surface does not get destroyed while the thread is using it.
This method is intended to be used by frameworks which often need
direct access to the Surface object (usually to pass it to native code).
When designing APIs always use SurfaceHolder to pass surfaces around
as opposed to the Surface object itself. A rule of thumb is that
application code should never have to call this method.
|
public android.graphics.Rect | getSurfaceFrame()Retrieve the current size of the surface. Note: do not modify the
returned Rect. This is only safe to call from the thread of
{@link SurfaceView}'s window, or while inside of
{@link #lockCanvas()}.
|
public boolean | isCreating()Use this method to find out if the surface is in the process of being
created from Callback methods. This is intended to be used with
{@link Callback#surfaceChanged}.
|
public android.graphics.Canvas | lockCanvas(android.graphics.Rect dirty)Just like {@link #lockCanvas()} but allows to specify a dirty rectangle.
Every
pixel within that rectangle must be written; however pixels outside
the dirty rectangle will be preserved by the next call to lockCanvas().
|
public android.graphics.Canvas | lockCanvas()Start editing the pixels in the surface. The returned Canvas can be used
to draw into the surface's bitmap. A null is returned if the surface has
not been created or otherwise can not be edited. You will usually need
to implement {@link Callback#surfaceCreated Callback.surfaceCreated}
to find out when the Surface is available for use.
The content of the Surface is never preserved between unlockCanvas() and
lockCanvas(), for this reason, every pixel within the Surface area
must be written. The only exception to this rule is when a dirty
rectangle is specified, in which case, non dirty pixels will be
preserved.
If you call this repeatedly when the Surface is not ready (before
{@link Callback#surfaceCreated Callback.surfaceCreated} or after
{@link Callback#surfaceDestroyed Callback.surfaceDestroyed}), your calls
will be throttled to a slow rate in order to avoid consuming CPU.
If null is not returned, this function internally holds a lock until
the corresponding {@link #unlockCanvasAndPost} call, preventing
{@link SurfaceView} from creating, destroying, or modifying the surface
while it is being drawn. This can be more convenience than accessing
the Surface directly, as you do not need to do special synchronization
with a drawing thread in {@link Callback#surfaceDestroyed
Callback.surfaceDestroyed}.
|
public void | removeCallback(android.view.SurfaceHolder$Callback callback)Removes a previously added Callback interface from this holder.
|
public void | setFixedSize(int width, int height)Make the surface a fixed size. It will never change from this size.
When working with a {link SurfaceView}, this must be called from the
same thread running the SurfaceView's window.
|
public void | setFormat(int format)Set the desired PixelFormat of the surface. The default is OPAQUE.
When working with a {link SurfaceView}, this must be called from the
same thread running the SurfaceView's window.
|
public void | setKeepScreenOn(boolean screenOn)Enable or disable option to keep the screen turned on while this
surface is displayed. The default is false, allowing it to turn off.
Enabling the option effectivelty.
This is safe to call from any thread.
|
public void | setSizeFromLayout()Allow the surface to resized based on layout of its container (this is
the default). When this is enabled, you should monitor
{@link Callback#surfaceChanged} for changes to the size of the surface.
When working with a {link SurfaceView}, this must be called from the
same thread running the SurfaceView's window.
|
public void | setType(int type)Sets the surface's type. Surfaces intended to be used with OpenGL ES
should be of SURFACE_TYPE_GPU, surfaces accessed by DMA engines and
hardware accelerators should be of type SURFACE_TYPE_HARDWARE.
Failing to set the surface's type appropriately could result in
degraded performance or failure.
|
public void | unlockCanvasAndPost(android.graphics.Canvas canvas)Finish editing pixels in the surface. After this call, the surface's
current pixels will be shown on the screen, but its content is lost,
in particular there is no guarantee that the content of the Surface
will remain unchanged when lockCanvas() is called again.
|