0

我想使用表面视图在画布上绘制 13 个不同的位图(显然,使用表面视图还有其他一些原因)。为此,我启动了一个游戏线程,在其中我调用了无限循环中的表面视图方法,并在此方法中循环绘制 13 个不同的位图。

但在三星 Galaxy s3、galaxy s2 等手机和摩托罗拉设备中,我的一些位图在某个时间点后就消失了。

这是我绘制位图的代码:

for (int i = 0; i < 13; i++) {              

            // Drawing Bushes
            canvas.drawBitmap(assets.bushes[this.bushes[i].frameNo - 1], null,
                    camera.getScaledRect(bushes[i].bounds.getRect()),
                    bitmapPaint);

            /*
             * drawBitmap(canvas, bushes[i],
             * assets.bushes[this.bushes[i].frameNo - 1], camera);
             */

            // Drawing Waves
            if (waves[i].alpha != 0) {
                bitmapPaint.setAlpha((int) (waves[i].alpha * 255));
                canvas.drawBitmap(assets.waves[this.waves[i].frameNo - 1],
                        null, camera.getScaledRect(waves[i].bounds.getRect()),
                        bitmapPaint);
                bitmapPaint.setAlpha(255);
            }    

        }
4

1 回答 1

0

这里可能是一个答案。较旧的设备可能跟不上。只需尝试对位图进行采样。这增加了我的表现。似乎屏幕在密集时被擦拭。虽然质量损失了一点。

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

公共静态int calculateInSampleSize(BitmapFactory.Options 选项,int reqWidth,int reqHeight);

公共静态位图 decodeSampledBitmapFromResource(资源 res,int resId,int reqWidth,int reqHeight)

于 2013-10-21T23:53:02.393 回答