SurfaceViewでfpsの計算、およびfpsに合わせた内容のみ表示。
acitivity(androidのメイン)のoncreateメソッドで以下のようにして使う。
MySurfaceView myView;
myView = new MSurfaceView( this );
setContensView( myView );
<textarea readonly="readonly" cols="75" rows="8">package org.jp.Box2dTest; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback, Runnable { private SurfaceHolder m_holder; private Thread m_mainLoopThread; private Bitmap m_offscreen; private Canvas m_offcanvas; private FPS m_fps; public MySurfaceView(Context context) { super( context ); m_holder = getHolder(); m_holder.addCallback( this ); m_holder.setFixedSize( getWidth(), getHeight() ); m_fps = new FPS(); m_fps.Init( 10 ); } public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO 自動生成されたメソッド・スタブ } public void surfaceCreated(SurfaceHolder arg0) { // TODO 自動生成されたメソッド・スタブ m_mainLoopThread = new Thread( this ); m_mainLoopThread.start(); } public void surfaceDestroyed(SurfaceHolder arg0) { // TODO 自動生成されたメソッド・スタブ m_mainLoopThread = null; } public void run() { // TODO 自動生成されたメソッド・スタブ Canvas canvas; // オフスクリーンは1度だけ作り、2回目以降はオフスクリーンを描画するだけ while (m_mainLoopThread !=null) { canvas = m_holder.lockCanvas(); if (m_offscreen ==null) { m_offscreen = Bitmap.createBitmap( canvas.getWidth(), canvas .getHeight(), Bitmap.Config.ARGB_8888 ); //Canvas offCanvas = new Canvas( m_offscreen ); m_offcanvas = new Canvas( m_offscreen ); m_offcanvas.setBitmap( m_offscreen ); m_offcanvas.drawColor( Color.WHITE ); m_offcanvas.drawText( "Offscreen buffer test.", 20, 20, new Paint() ); } canvas.drawBitmap( m_offscreen, 0, 0, null ); m_fps.calcFPS(); canvas.drawText( "calc fps" + m_fps.GetFPS(), 20, 50, new Paint() ); m_fps.fps_wait(); canvas.drawText( "wait 40fps " + m_fps.GetFPS2(), 20, 70, new Paint() ); m_holder.unlockCanvasAndPost( canvas ); } } } </textarea>
</form>
※コメント投稿者のブログIDはブログ作成者のみに通知されます