投稿

11月, 2013の投稿を表示しています

リソースのSurfaceViewを使う

リソースのSurfaceViewを使うには、getHolder()でSurfaceHolderを取得する。 SurfaceHolder.Callbackのインターフェイスを持つクラスをコールバックに登録する。 public class MyView implements SurfaceHolder.Callback, Runnable{ private SurfaceHolder mHolder; private Thread mRun; MyTouchActivity mMain; // コンストラクタ public MyView(MyTouchActivity myactivity, SurfaceView sv){ mMain = myactivity; // リソースのSurfaceViewからSurfaceHolderを得てコールバックを設定する mHolder = sv.getHolder(); mHolder.addCallback(this); } @Override public void surfaceCreated(SurfaceHolder holder){ mRun = new Thread(this); } @Override public void surfaceDestroyed(SurfaceHolder holder){ mRun = null; } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){ if(mRun != null){ mRun.start(); } } @Override public void run(){ Paint p = new Paint(); while(mRun != null){ Canvas canvas = mHolder.lockCanvas(); canvas.drawColor(Color.BLUE); p.setColor(Color.argb(255, 255, 255, 0)); canvas.drawCircle