0

我使用以下代码在 surfaceCreated() 中设置了背景图像:

    Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.untitled);
    float heightScale = ((float)background.getHeight())/(float)this.getHeight();
    float widthScale = (float)background.getWidth()/(float)this.getWidth();
    float scale = heightScale > widthScale ? widthScale : heightScale;
    int newWidth = Math.round((float)background.getWidth()/scale);
    int newHeight = Math.round((float)background.getHeight()/scale);
    scaled = Bitmap.createScaledBitmap(background, newWidth, newHeight, true);

缩放为受保护的位图。在 onDraw() 函数期间,我有这个:

    canvas.drawBitmap(scaled, 0, 0, null); // draw the background

与使用此功能相比,这会使我的绘图速度减慢 20-30 毫秒:

canvas.drawColor(Color.Black);

有没有办法解决?加速后台onDraw函数?我注意到如果我不设置背景,应用程序将不会清除我绘制的精灵。

4

1 回答 1

0

嗯......这是你如何做到的:

您创建一个布局并将该布局设置为内容视图。然后将表面视图添加到布局中,然后将表面视图像素格式设置为透明,如下所示:

    panel = new Panel(this, getNewHandler());   
    ((LinearLayout)findViewById(R.id.panellinear)).addView(panel);
    SurfaceHolder p;
    panel.setZOrderOnTop(true);    // necessary
    p = panel.getHolder();
    p.setFormat(PixelFormat.TRANSPARENT)

(对我来说,面板是扩展 SurfaceView 的东西)

于 2012-05-24T19:51:22.353 回答