Graphics

Graphics in Android


Android API provides allow to draw custom graphics onto a canvas or to modify existing views to look good.

 We we draw graphics, we can do it in 2 ways.

1. draw the graphics into a view object from layout.
2. draw the graphics directly to the Canvas.

To draw something, we need 4 basic components.

1. A Bitmap to hold the pixels.
2. A canvas to host the draw  calls- writing into the Bitmap.
3. Draw primitive- like draw rectangle, text, path etc.
4. Paint- describes the colors and styles to draw.


Bitmap to hold the pixels:

It's a simple example to draw a bitmap on screen in View. The content view is set to a View, and the drawing is achieved in onDraw method.
To draw a bitmap on screen in View, Content view is set to view and dwaing is get in onDraw().

 A canvas to host the draw  calls- writing into the Bitmap:
Canvas works as interface to actual surface upon which graphics will drawn.
It holds all "draw" calls.With canvas, drawing is actually performed underlying Bitmap, which is placed into Window.

 Bitmap bm=BitmapFactory.decodeResource(getResources(),R.drawable.image);

canvas.drawBitmap(bm,0,0,null);


To draw color
 canvas.drawColor(Color.WHITE);

here is the simple example program

package com.srinivas.graphics;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new NewView(this));
    }
   
   
    private class NewView extends View
    {

        public NewView(Context context) {
            // TODO Auto-generated constructor stub
            super(context);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            super.onDraw(canvas);
            Bitmap bm=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
            canvas.drawBitmap(bm, 0,0, null);
        }
    }
}


download source code here
http://www.4shared.com/zip/9wuEVziV/GRaphics.html?

SurfaceView

it is a subclass of View. By using this we can draw surface within the View hierarchy.



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.
To begin, you need to create a new class that extends SurfaceView. The class should also implement SurfaceHolder.Callback.


Comments

Popular posts from this blog

What is Android ?