android – 画布中的帧速率绘制位图更好?

android – 画布中的帧速率绘制位图更好?,第1张

概述我正在动态壁纸拍摄动画.这是代码.它几乎遵循CubeWallpaper演示: void drawFrame() { final SurfaceHolder holder = getSurfaceHolder(); final BufferedInputStream buf; final Bitmap bitmap, rbitmap; Canvas 我正在动态壁纸拍摄动画.这是代码.它几乎遵循CubeWallpaper演示:

voID drawFrame() {        final SurfaceHolder holder = getSurfaceHolder();    final BufferedinputStream buf;    final Bitmap bitmap,rbitmap;        Canvas c = null;        try {            c = holder.lockCanvas();            if (c != null) {        try {        buf = new             BufferedinputStream(assets.                    open(folder+"/"                         +imageList[ilen++])                    );        bitmap = BitmapFactory.            decodeStream(buf);        rbitmap = Bitmap.createBitmap            (bitmap,imageWIDth,imageHeight,transMatrix,false);        c.drawBitmap(rbitmap,paddingX,paddingY,null);        if ( ilen >= imageCount ) ilen=0;        }        catch (Exception e) { e.printstacktrace(); }            }        } finally {            if (c != null) holder.unlockCanvasAndPost(c);        }        // Reschedule the next redraw        mHandler.removeCallbacks(mDrawCube);        if (mVisible) {            mHandler.postDelayed(mDrawCube,fps);        }    }

其中“transMatrix”是之前预定义的缩放和旋转矩阵.

它应该以30fps渲染,但当然不会那样做.我最初的猜测是BufferedinputStream是一个因素.我应该缓存其中的一些,因为我和Bitmaps一起使用.但任何其他想法?我是否必须使用OpenGL黑客进行动态壁纸?

解决方法 是的,BufferedinputStream和BitmapFactory实际上不应该在drawFrame()中.你在每一帧上加载和创建资源,这是一个巨大的浪费.就像你说的那样,事先尽可能多地缓存,如果你发现在绘图过程中需要加载更多的东西,可以使用一个单独的线程来做它,这样就不会减慢绘图速度. 总结

以上是内存溢出为你收集整理的android – 画布中的帧速率绘制位图更好?全部内容,希望文章能够帮你解决android – 画布中的帧速率绘制位图更好?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1129577.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存