2012-05-24 3 views
0

я установил свой фоновый рисунок в surfaceCreated(), используя этот код:SurfaceView фон замедляет OnDraw 20-30 мс

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? Я заметил, что если я не установлю фон, приложение не очистит спрайты, которые я нарисовал.

ответ

0

Ну ... Вот как это сделать:

Вы можете создать макет и настроить макет в качестве представления содержимого. Затем добавьте SurfaceView в макет, а затем установить поверхностный формат вид пикселя прозрачным образом:

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)

Смежные вопросы