CANVAS
The Android framework
APIs provides a set 2D drawing APIs that allow you to render your own custom
graphics onto a canvas or to modify existing Views to customize their look and
feel. When drawing 2D graphics, you'll typically do so in one of two ways:
a.
Draw your graphics or animations into a View object from your
layout. In this manner, the drawing of your graphics is handled by the system's
normal View hierarchy drawing process — you simply define the graphics to go inside
the View.
b.
Draw your graphics directly to a Canvas. This way, you
personally call the appropriate class's onDraw() method (passing it your Canvas), or one of
the Canvas
draw...()
methods (likedrawPicture()). In
doing so, you are also in control of any animation.
Drawing to a Canvas, is
better when your application needs to regularly re-draw itself. Applications
such as video games should be drawing to the Canvas on its own.
Drawing
With Canvas:
When you're writing an
application in which you would like to perform specialized drawing and/or
control the animation of graphics, you should do so by drawing through a
Canvas. A Canvas works for you as a pretense, or interface, to the actual
surface upon which your graphics will be drawn. It holds all of your "draw" calls.
Via the Canvas, your drawing is actually performed upon an underlying Bitmap , which is placed into the window.
However, if you need to create a new Canvas, then you must define the Bitmap upon which drawing will actually be
performed. The Bitmap is always required for a Canvas. You can set up a new
Canvas like this:
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
Now your Canvas will
draw onto the defined Bitmap.
On
a View:
If your application does not
require a significant amount of processing or frame-rate speed (perhaps for a
chess game, a snake game, or another slowly-animated application), then you
should consider creating a custom View component and drawing with a Canvas in View.onDraw(). The most convenient aspect
of doing so is that the Android framework will provide you with a pre-defined
Canvas to which you will place your drawing calls.
To start, extend the View class (or descendant thereof) and
define the onDraw() callback method.
This method will be called by the Android framework to request that your View
draw itself. This is where you will perform all your calls to draw through the Canvus, which is passed to you through the onDraw() callback.
On a SurfaceView:
The SurfaceView is a special subclass of View
that offers a dedicated drawing surface within the View hierarchy. The aim is
to offer this drawing surface to an application's secondary thread, so that the
application isn't required to wait until the system's View hierarchy is ready
to draw. Instead, a secondary thread that has reference to a SurfaceView can
draw to its own Canvas at its own pace.
No comments:
Post a Comment