2011年1月15日アーカイブ

サンプルを見たり、ネットで調べたりしてると、ぼんやりとSurfaceViewが分かってきた。


SurfaceView, SurfaceHolder, Thread, Callback, Runnable がポイントらしい。

また、Callback に、SurfaceCreated, SurfaceChanged, SurfaceDestroyed があって、
Runnable に、run があるらしい。

Thread は、中心的な役割をしてるっぽいけど、良く分からない。


で、とりあえず、動くプログラムは書けるようになった。

でも、最初に書いてみたプログラムでは、画面が点滅してしまった。

どうも、原因はダブルバッファらしい。

A画面に描いた物と、B画面に描いた物が交互に表示されて、点滅してるように見える。


毎回、背景を含めて全部描けば良い。

でも、前の画面に、次の図形を足していくような描写では、ちょっと難しい。
画面サイズのBitmapを作って、図形をBitmapに描写してから、そのBitmapを表示するという方法が使えるらしい。

ただ、なんとなく無駄が多いような気がする。


変更したい所だけダブルバッファを使う、みたいな感じが良さそう。

Rect rect = new Rect(x0,y0,x1,y1);
Canvas canvas = holder.lockCanvas(rect);
何か描く
holder.unlockCanvasAndPost(canvas);


どれにしても、A面、B面を常に意識しておかないと、変な表示になりそう。

もっと良い方法があるのかもしれない。

MTBlog50c2BetaInner

ランダムブログ

2011年11月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

最近のコメント

MovableType(MT)テンプレート 無料(フリー)
Powered by Movable Type 5.03