DrawBitMapが3つのビットマップを描画するのに50-60msかかるのは、1つがフルスクリーンを占める矩形であり、1つが円であり、もう1つがパスであることです。私のビットマップは、Bitmap.Configが空白のビットマップにCanvas.drawPath、drawRect、drawCircleをARGB_8888として使用して作成されます。 ARGB_8888を使用して、レイヤリング効果を得るために背景を表示させています。 私はdrawBitmapが非常に簡単な操作であると思ったので、約50msと見なして時間がかかることに驚いた。誰かが私が作っている基本的な間違いがあるかと指導することはできますか?以下は、Android DrawBitMapを使用すると非常に遅い
canvas.drawBitmap(Rectangle,0,0,p);
canvas.translate(x,y); // For animation effect
canvas.drawBitmap(Circle,0,0,p);
canvas.drawBitmap(Leaf1,0,0,p);
OnDraw内のビットマップを描画する適切なビットマップ
Canvas c = new Canvas(Rectangle);
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(0xff6e8b3e);
c.drawRect(0,0,320,480,p);
Canvas c = new Canvas(Circle);
Paint p = new Paint();
CirclePath = new Path();
p.setAntiAlias(true);
p.setColor(0xffcd661d);
System.out.println("x = "+x+" y = "+y);
CirclePath.addCircle(50,50,10,Path.Direction.CW);
c.drawPath(CirclePath,p);
Canvas c = new Canvas(Leaf1);
Paint paint = new Paint();
Path path = new Path();
paint.setAntiAlias(true);
path.moveTo((float)184.37,(float)219.15);
path.cubicTo((float)188.32,(float)219.15,(float)192.88,(float)220.44,(float)195.62,(float)223.54);
path.cubicTo((float)197.84,(float)226.05,(float)203.2,(float)229.84,(float)198.18,(float)245.98);
上の図形を描画
Rectangle = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888);
Circle = Bitmap.createBitmap(70,70,Bitmap.Config.ARGB_8888);
Leaf1 = Bitmap.createBitmap(20,30,Bitmap.Config.ARGB_8888);
を空白ビットマップを作成する私のコード
です
今この3つのdrawBitMapにかかる時間を記録すると、約50msかかることがわかります コードに大きな間違いがありますか? Bitmap.ConfigをRGB_565に変更すると時間が約8msになりますが、背景は表示されず、パスの周りに黒いボックスが表示されます
はい画像の周りに背景が正しく表示されるように、アルファチャンネルが使用されています。そして、はい、私はアンチエイリアスを使用しているので、回転とスケールを行うことも目的です。基本的に私はベクトルグラフィックスアニメーションを行うSVGプレーヤーを設計しているので、ビットマップはdrawPath関数を使用して構築され、ビットマップはフレームごとに画面に描画されます –