2012-10-16 6 views
4

나는 표면 뷰에 이미지를 추가하고 클릭 할 수있게하려고합니다. 내가 레이아웃을 사용하여 XML을 통해 할 수 있습니다. 하지만 코드에서 동적으로 할 수 없습니다. 나는 SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS.So에 SurfaceHolder 타입을 설정했기 때문에 캔바스에서 이미지를 그리는 데 lockcanvas를 사용할 수 없다. 내 앱에서 표면 뷰에 이미지를 그리기 위해해야 ​​할 일이있다. Pls 날 안내?표면 뷰에 이미지를 그리는 방법 android

+0

다른 참조 [DroidNova 시리즈]와 같은 일부 일 (http://www.droidnova.com/2d-tutorial-series-part-i,770.html) –

답변

8

public class MSurface extends SurfaceView implements SurfaceHolder.Callback { 

    public MSurface(Context context) { 
     super(context); 
     getHolder().addCallback(this); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.icon); 
     canvas.drawColor(Color.BLACK); 
     canvas.drawBitmap(icon, 10, 10, new Paint());   
    } 

    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
     Canvas canvas = null; 
     try { 
      canvas = holder.lockCanvas(null); 
      synchronized (holder) { 
       onDraw(canvas); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (canvas != null) { 
       holder.unlockCanvasAndPost(canvas); 
      } 
     } 
    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     // TODO Auto-generated method stub 

    } 
} 
+1

설정하는 방법 표면보기의 중심에있는 이미지 nad 전체 표면보기로 스트레칭하는 방법 –

+0

전체 표면을 덮기 위해 비트 맵 또는 채우기/줄무늬를 어떻게 스케일링합니까? – TomeeNS

+0

비슷한 질문이 있습니까? – kemdo

관련 문제