harutin_99の日記: AndroidタブレットでSurfaceViewが動かない 1
ネット上のサンプルをあさると、
SurfaceViewのコンストラクタで、
以下の処理が記述されているサンプルが多いが
Android 3以降では動かない。
holder = getHolder();
holder.addCallback(this);
holder.setFixedSize(getWidth(), getHeight());
ここで、実はgetWidth()やgetHeight()は0を返している。
以下想像。
コンストラクタが完了するまではsurfaceが生成されていないため、
幅と高さは0が返されるのだと思う。
そしてAndroid 3以降はサイズが0,0だとsurfaceが生成されず、
surfaceCreatedも呼ばれることがないのではないか。
というわけで、
holder.setFixedSize(getWidth(), getHeight());は、
縦幅、横幅に固定値を設定するか、
surfaceCreated(やsurfaceChanged)の中に書くしかないのでは?