gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

SurfaceViewの土台

2010-08-28 08:55:38 | インポート

SurfaceViewの土台

SurfaceViewでfpsの計算、およびfpsに合わせた内容のみ表示。
acitivity(androidのメイン)のoncreateメソッドで以下のようにして使う。
MySurfaceView myView;
myView = new MSurfaceView( this );
setContensView( myView );

<form>

<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>

コメントを投稿