Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 画布中的帧速率绘制位图更好?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在动态壁纸拍摄动画.这是代码.它几乎遵循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 – 画布中的帧速率绘制位图更好?所遇到的程序开发问题。

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

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