2008年6月9日 星期一

SurfaceView 如何使用



import Android.view.*;

SurfaceView sv;
SurfaceHolder holder;

sv = (SurfaceView) findViewById ( R.id.sv1 );
holder = sv.getHolder();

Canvas cv = holder.lockCanvas();
cv.drawBitmap ( bitmap , left , top , new Paint() );
holder.unlockCanvasAndPost(cv);

這一段 code 會比使用 ImageView 觀看 Bitmap 來的更快, 因為我們利用的 Canvas 直接繪圖, 但是 ImageView 在到 android.graphics.drawable.BitmapDrawable 的 onDraw (Canvas canvas); 之前還需要作很多判斷, 所以速度上來說會比直接使用 Canvas 慢上許多.

另外 drawBitmap 其實是呼叫 JNI native_drawBitmap 來作實際上得繪圖動作.
public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
{
native_drawBitmap(mNativeCanvas, bitmap.ni(), left, top, paint == null ? 0 : paint.mNativePaint);
}

沒有留言: