SurfaceView
2 つのビットマップの下、間、または上にパスを描画する必要があります。パスの描画をアニメートして、フル サイズに拡大するように表示します。このコードは、ビットマップを描画しない限り機能します。
ビットマップは次のように指定されます (寸法onLayout(...)
を取得するために で)。View
mFrontBitmap = Bitmap.createBitmap((int) width, (int) height, mConfig);
Canvas temp = new Canvas(mFrontBitmap);
temp.drawColor(Color.TRANSPARENT, Mode.CLEAR);
(偶然に何も残さないように拭き取っています。)次に、SurfaceView
スレッドのrunメソッド内の描画コードは
if(mCurrentLayer==Layer.BACK) {
//draw path
if(mPath!=null)
canvas.drawPath(mPath, mPaint);
}
canvas.drawBitmap(mBackBitmap, 0, 0, null);
if(mCurrentLayer==Layer.MIDDLE) {
//draw path
if(mPath!=null)
canvas.drawPath(mPath, mPaint);
}
canvas.drawBitmap(mFrontBitmap, 0, 0, null);
if(mCurrentLayer==Layer.FRONT) {
//draw path
if(mPath!=null)
canvas.drawPath(mPath, mPaint);
}
2drawBitmap
行をコメントアウトすると、アニメーションは正常にレンダリングされます。それらを入れると、アニメーションが完了するまで何も表示されず、パスが (全体として) ビットマップの 1 つに直接レンダリングされます。私は途方に暮れています。LunarLander のサンプルを見て、背景のビットマップをレンダリングしているので、これは明らかにSurfaceView
できることですが、私にはできません。どうなり得るか?