|
Build 1.0_r1(from source) | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface SurfaceHolder
Abstract interface to someone holding a display surface. Allows you to
control the surface size and format, edit the pixels in the surface, and
monitor changes to the surface. This interface is typically available
through the SurfaceView class.
When using this interface from a thread different than the one running
its SurfaceView, you will want to carefully read the
lockCanvas() and Callback.surfaceCreated.
| Nested Class Summary | |
|---|---|
static class |
SurfaceHolder.BadSurfaceTypeException
Exception that is thrown from lockCanvas() when called on a Surface
whose is SURFACE_TYPE_PUSH_BUFFERS. |
static interface |
SurfaceHolder.Callback
A client may implement this interface to receive information about changes to the surface. |
| Field Summary | |
|---|---|
static int |
SURFACE_TYPE_GPU
Surface type: creates a surface suited to be used with the GPU |
static int |
SURFACE_TYPE_HARDWARE
Surface type: creates a suited to be used with DMA engines and hardware accelerators. |
static int |
SURFACE_TYPE_NORMAL
Surface type: creates a regular surface, usually in main, non contiguous, cached/buffered RAM. |
static int |
SURFACE_TYPE_PUSH_BUFFERS
Surface type: creates a "push" surface, that is a surface that doesn't owns its buffers. |
| Method Summary | |
|---|---|
void |
addCallback(SurfaceHolder.Callback callback)
Add a Callback interface for this holder. |
Surface |
getSurface()
Direct access to the surface object. |
Rect |
getSurfaceFrame()
Retrieve the current size of the surface. |
boolean |
isCreating()
Use this method to find out if the surface is in the process of being created from Callback methods. |
Canvas |
lockCanvas()
Start editing the pixels in the surface. |
Canvas |
lockCanvas(Rect dirty)
Just like lockCanvas() but allows to specify a dirty rectangle. |
void |
removeCallback(SurfaceHolder.Callback callback)
Removes a previously added Callback interface from this holder. |
void |
setFixedSize(int width,
int height)
Make the surface a fixed size. |
void |
setFormat(int format)
Set the desired PixelFormat of the surface. |
void |
setKeepScreenOn(boolean screenOn)
Enable or disable option to keep the screen turned on while this surface is displayed. |
void |
setSizeFromLayout()
Allow the surface to resized based on layout of its container (this is the default). |
void |
setType(int type)
Sets the surface's type. |
void |
unlockCanvasAndPost(Canvas canvas)
Finish editing pixels in the surface. |
| Field Detail |
|---|
static final int SURFACE_TYPE_NORMAL
static final int SURFACE_TYPE_HARDWARE
static final int SURFACE_TYPE_GPU
static final int SURFACE_TYPE_PUSH_BUFFERS
| Method Detail |
|---|
void addCallback(SurfaceHolder.Callback callback)
callback - The new Callback interface.void removeCallback(SurfaceHolder.Callback callback)
callback - The Callback interface to remove.boolean isCreating()
SurfaceHolder.Callback.surfaceChanged(android.view.SurfaceHolder, int, int, int).
void setType(int type)
type - The surface's memory type.
void setFixedSize(int width,
int height)
width - The surface's width.height - The surface's height.void setSizeFromLayout()
SurfaceHolder.Callback.surfaceChanged(android.view.SurfaceHolder, int, int, int) 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.
void setFormat(int format)
format - A constant from PixelFormat.PixelFormatvoid setKeepScreenOn(boolean screenOn)
screenOn - Supply to true to force the screen to stay on, false
to allow it to turn off.Canvas lockCanvas()
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
Callback.surfaceCreated or after
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 unlockCanvasAndPost(android.graphics.Canvas) call, preventing
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 Callback.surfaceDestroyed.
Canvas lockCanvas(Rect dirty)
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().
dirty - Area of the Surface that will be modified.
lockCanvas()void unlockCanvasAndPost(Canvas canvas)
canvas - The Canvas previously returned by lockCanvas().android.view.SurfaceHolder.lockCanvasRect getSurfaceFrame()
SurfaceView's window, or while inside of
lockCanvas().
Surface getSurface()
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 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
Callback.surfaceCreated and
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.
|
Build 1.0_r1(from source) | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||