gpt4 book ai didi

Android: canvas.drawBitmap 性能问题

转载 作者:行者123 更新时间:2023-11-29 22:28:16 49 4
gpt4 key购买 nike

我最近遇到了一个问题 Android: Rotation of image around the center这是在Unconn的帮助下解决的。

然而,事实证明,这个解决方案——以及它的工作原理——确实比 RotateAnimation 的东西有更差的性能。

我目前拥有的:1) 带有两个 ImageView 的 FrameLayout,彼此重叠2) SensorEventHandler,它根据测量的航向移动下方 View 。如果我使用 RotateAnimation,这是可以接受的

我想加快速度并稍微平滑动画,但失败了。这是当前的解决方案:1)单独线程的SurfaceView,控制层的绘制2) 如果不执行下面的代码,线程可以达到 50 fps 左右。3) 使用下面的代码,帧率下降到 5ps 甚至更低,所以它不再是非常平滑的东西......

代码如下:

mRadar:显示“雷达”的位图,较早从资源加载mHeading:从传感器获取的当前航向(以度为单位)mRadarW,mRadarH:图片的初始宽/高,创建时确定

        Matrix m = new Matrix();
m.setRotate(mHeading, mRadarW/2, mRadarH/2);
Bitmap rotated_radar = Bitmap.createBitmap(mRadar, 0, 0, mRadarW, mRadarH, m, true);
canvas.drawBitmap(rotated_radar, (mRadarW - rotated_radar.getWidth())/2, (mRadarH - rotated_radar.getHeight())/2, null);
canvas.drawBitmap(mRadar, 0, 0, null);

Matrix/drawBitmap 的性能不是很好,甚至比 RotateAnimation 还差吗?如果没有机会使用它:您可以提出哪些选择?虽然 RotateAnimation 现在可以工作,但我需要合成一个更复杂的图像,之前我必须使用 RotateAnimation,所以我担心,我会再次失去 drawBitmap 和 friend ...

哦,我想念 CALayers :)

最佳答案

这个非常快:

canvas.save(); //save the position of the canvas
canvas.rotate(angle, X + (ballW / 2), Y + (ballH / 2)); //rotate the canvas
canvas.drawBitmap(ball, X, Y, null); //draw the ball on the rotated canvas
canvas.restore(); //"rotate" the canvas back so that it looks like the ball has rotated

我使用了一个漂亮的 32 位 png 图像,因此不需要任何滤镜或抗锯齿画图...您为这个 Sprite 使用什么样的图像?

关于Android: canvas.drawBitmap 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5186212/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com