Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – SurfaceView的替代品?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作一个自定义ProgressBar,它有一个只旋转的位图.如果我使用View.invalidate,FPS将会断断续续; deltaTime将多次上升40次.逻辑和渲染几乎是瞬时的,但无效调用使它变慢.所以我正在尝试SurfaceView,问题是我早先将SurfaceViews与其他视图组装在一起有问题,我不想使用它.有没有SurfaceView和View.invalidate的替代品,还是我坚持使用它们?

编辑:

为了澄清一些,我正在制作一个自定义视图,它是一个中间ProgressBar.因此View是ProgressBar.我现在也没有下载任何东西,我只想为我的视图获得最大FPs.一些代码

@H_382_11@myProgressBar extends View implements Runnable

并运行()

calculateNewRotation();
invalidate();
post(this);

其中calculateNewRotation()

long Now = SystemClock.uptimeMillis();
int deltaTime = (int) (Now - mLastRender);
mLastRender = Now;
mSpinRotation += deltaTime * SPIN_SPEED_PER_MILLISECOND_CLOCKWISE;

Post(this)引用MyProgressBar,它将永远循环,直到我说不然.

在我的onDraw()中

@H_382_11@mCamera.save(); mCamera.rotateZ(mSpinRotation); mCamera.getMatrix(mMatriX); mCamera.restore(); mMatrix.preTranslate(-mTranslatePivotX,-mTranslatePivotY); mMatrix.postTranslate(mTranslatePivotX + mCenterX,mTranslatePivotY + mCenterY); canvas.drawBitmap(mSpinBitmap,mMatrix,mSpinBitmapPaint);

calculateNewRotation()= 1 ms的时间.

onDraw()的时间= 1毫秒.

问题是整体时间通常在40毫秒以上.我的解决方案是使用SurfaceView,但是我不喜欢使用透明像素绘制其表面的视图,因此将显示底层表面.我正在寻找的是一个视图,我可以随时获得画布,最好每16毫秒获得60 FPs.现在,有这样的观点吗?

解决方法

你是否在UI线程上进行了长时间的操作(通常是需要进度条的原因)?您的UI线程应该更新进度条,而另一个线程或异步任务处理长操作.
@H_616_42@

大佬总结

以上是大佬教程为你收集整理的android – SurfaceView的替代品?全部内容,希望文章能够帮你解决android – SurfaceView的替代品?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。