mobmobです。
仰るとおりBitmap#createBitmapでオフスクリーンを作ることができました。
> Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888)
DevGuideのGraphicsにこのへんのことが書かれていたのですが理解が浅すぎました。
せっかくなので検証に使用したサンプルコードのほう記載させて頂きます。
ありがとうございました。
public class SurfaceViewOffscreenTest extends SurfaceView implements
SurfaceHolder.Callback, Runnable {
private SurfaceHolder holder;
private Thread mainLoopThread;
private Bitmap offscreen;
public SurfaceViewOffscreenTest(Context context) {
super(context);
holder = getHolder();
holder.addCallback(this);
holder.setFixedSize(getWidth(), getHeight());
}
public void surfaceCreated(SurfaceHolder holder) {
mainLoopThread = new Thread(this);
mainLoopThread.start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
mainLoopThread = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int
w, int h) {
}
public void run() {
Canvas canvas;
// オフスクリーンは1度だけ作り、2回目以降はオフスクリーンを描画するだけ
while (mainLoopThread != null) {
canvas = holder.lockCanvas();
if (offscreen == null) {
offscreen = Bitmap.createBitmap(canvas.getWidth(),
canvas.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas offCanvas = new Canvas(offscreen);
offCanvas.setBitmap(offscreen);
offCanvas.drawColor(Color.WHITE);
offCanvas.drawText("Offscreen buffer test.", 20, 20,
new Paint());
}
canvas.drawBitmap(offscreen, 0, 0, null);
holder.unlockCanvasAndPost(canvas);
}
}
}
On 6月5日, 午後5:43, Keiji Ariyama <
keiji_ariy...@c-lis.co.jp> wrote:
> 有山@大阪です。
> 出先から失礼します。
>
> Bitmap.createBitmap(...)
> new Canvas(Bitmap)でどうでしょう。
>
> Keiji
>