Menampilkan Gambar di Surface View & View (Android Game)


Untuk menampilkan image di android ada beberapa cara yang bisa digunakan, yaitu dengan memanfaatkan kelas View dan SurfaceView. Kelas View dan SurfaceView merupakan bagian dari subclass yaitu android.view. Keduanya merupakan layout yang dimiliki oleh android. Objek View menghandle ukuran, drawing, perpindahan fokus, scrolling, key/gestur untuk area layar. Gambar yang akan diletakkan pada layout View membutuhkan satu fungsi onDraw() untuk me write gambar tersebut pada layout android. onDraw() pada kelas View dapat digunakan langsung dan dieksekusi langsung oleh kelas yang menyertakan(extends) Kelas View.

Contoh :

package com.example.droimage;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.View;
import android.view.SurfaceView;

public class GameView extends View {
private Bitmap bmp;

public GameView(Context context) {
super(context);
// TODO Auto-generated constructor stub
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}

public void onDraw(Canvas canvas){
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp, 10,10, null);
}

}

Sedangkan penggunaan onDraw() pada kelas SurfaceView yang juga berasal atau kelas turunan dari Views, tidak bisa langsung digunakan, Kelas SurfaceView akan membutuhkan callback listener untuk user dapat menggambar di android.  dalam method surfaceCreated (fungsi yang dipanggil ketika view telah terbuat), Canvas dapat diimplementasikan dan dapat memanggil method onDraw().

Agar Canvas dapat digunakan, anda dapat memanggil dan menambahkan method lockCanvas agar user dapat menggambar pada layout android.

public class GameView extends SurfaceView {

private Bitmap bmp;

private SurfaceHolder holder;

public GameView(Context context) {

super(context);

holder = getHolder();

holder.addCallback(new SurfaceHolder.Callback() {

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

Canvas c = holder.lockCanvas(null);

onDraw(c);

holder.unlockCanvasAndPost(c);

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format,

int width, int height) {

}

});

bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

}

@Override

protected void onDraw(Canvas canvas) {

canvas.drawColor(Color.BLACK);

canvas.drawBitmap(bmp, 10, 10, null);

}

}

Priview :

View SurfaceView

Image View

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s