2013-02-14 3 views
0

SurfaceView (Android 애플리케이션 API 레벨 8)를 확장하는 활동이 있습니다. 간단한 색상 대신 배경에 비트 맵을 그려야합니다. 캔버스에 비트 맵을 그릴 수있었습니다.> void 렌더링 (Canvas canvas)에서 주석 처리 된 코드를 사용하지만 성능이 너무 낮습니다.표면 비트 맵 렌더링 렌더링 성능에 영향을 미치는

비트 맵을 사용하면 렌더링 속도가 느려지지만 drawcolor를 사용하면 모든 것이 정상입니다.

코드에 문제가 있습니까? 어떻게 성능에 영향을주지 않으면 서 배경 이미지를 설정할 수 있습니까?

public class MainGamePanel extends SurfaceView implements 
     SurfaceHolder.Callback { 
public void render(Canvas canvas) { 


     canvas.drawColor(Color.WHITE); 
     /* 
     Rect dest = new Rect(0, 0, getWidth(), getHeight()); 
     Paint paint = new Paint(); 
     paint.setFilterBitmap(true); 

     Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background_play); 
     canvas.drawBitmap(myBitmap, null, dest, paint); 
     */ 
     droid.draw(canvas); 
    } 
} 

답변

2

어쩌면 당신은 필드로 비트 맵을 작성하고 같은 방법() 렌더링하여 외부에서 디코딩해야합니다

public class MainGamePanel extends SurfaceView implements 
    SurfaceHolder.Callback { 

    private Bitmap myBitmap; //creating a field 

    public MainGamePanel() { 

     myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background_play); //decode bitmap in constructor 

    } 

    public void render(Canvas canvas) { 


    canvas.drawColor(Color.WHITE); 

    Rect dest = new Rect(0, 0, getWidth(), getHeight()); 
    Paint paint = new Paint(); 
    paint.setFilterBitmap(true); 

    canvas.drawBitmap(myBitmap, null, dest, paint); //draw your bitmap 

    droid.draw(canvas); 
    } 
} 
+0

Z. 감사합니다, 그것은 외부 렌더링 초기화 페인트 개체로 잘 – RDX

+0

뿐만 아니라 일 성능이 향상됩니다. dev 사이트에서 말합니다. –

관련 문제