SurfaceViewを使ってみると奇妙な問題に遭遇しました。 this oneと同様に動作しますが、2フレーム間で点滅し続けます*。また、unlockCanvasAndPostは30-50Msを取ります。これは正常ですか?Android - SurfaceView。画面を消去せずに更新しています。 (注:私はNoobです)
毎回全てを再描画するのは良い考えではありませんが、フレームごとに350ドットを再描画することはお勧めしません。
* 2つのフレーム間のちらつき:(X、X)にフレームごとにドットを描きます.Xはフレーム番号です。 私はすべてのペアのフレームを示す1,1,3,3,5,5,7,7,9,9のすべての障害フレームを表示し、2,2,4,4,6,6,8,8のドットを表示します。ここで
描画コードです:
Canvas C;
while(running)
{
synchronized (mSurfaceHolder)
{
DoCalc(); //Doesn't do anything special. changes vars X1 and Y1
C=mSurfaceHolder.lockCanvas();
aDraw(C); // Only contains canvas.drawRect(X1-1, Y1-1, X1+1,Y1+1, P);
mSurfaceHolder.unlockCanvasAndPost(C); //Why does it take so long?
}
try {Thread.sleep(500);} //Temporary delay.
catch (InterruptedException e) {}
}
ありがとう、私はそれを試してみましょう。 – Anon
今すぐにやり遂げる時間を見つけました、すばらしい、ありがとう。それは本当にうまくいく。 – Anon
偉大な...速度に関しては、通常アンドロイドデバイスは約16Msである秒当たり少なくとも60フレームを行うことができます。あなたのエミュレータでペイントPを実行していないか、複雑なビットマップテクスチャタイプの塗りつぶしを使用していない限り、あなたのコードがあなたのsleep()を除いて遅くなるべき理由を見ることができません。 – Lumis