2012-10-31 5 views
4

Android UI에 대한 내 질문. 우리가 XML 레이아웃으로 작업 할 때 우리는캔버스 및 레이아웃 결합 (Android)

setContentView(R.layout.main);

(예를 들어) 쓰기 그리고 우리는 2D 그래픽 작업 할 때 우리는

Draw2D d = new Draw2D(this);
setContentView(d);

쓰기 그래서 나는 모두를 사용하려는 경우 ? 나는 layout-xml을 사용할 필요가 있고 화면의 일부는 전나무 그림 (Canvas)이다. 나는 surfaceView에 대해 읽었지 만, 캔버스를 사용하면 간단할까요?

+1

이 Draw2D 클래스는 무엇입니까? – fiddler

+0

그건 상관 없어요. 그것은 onDraw()를 사용하는 클래스입니다. @Override \t protected void onDraw(Canvas c){ \t super.onDraw(c); \t Paint paint = new Paint(); \t paint.setStyle(Paint.Style.FILL); \t ... user1752669

답변

5

실제로 XML 파일에서 레이아웃을 확장 한 다음 그 위에 그릴보기를 가져올 수 있습니다. SurfaceView는 특히 그리기에 편리합니다.

당신은 예를 아래에서 찾을 수 있습니다

main.xml에 :

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <SurfaceView 
     android:id="@+id/surface" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

TestActivity.java :

public class TestActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    SurfaceView surface = (SurfaceView) findViewById(R.id.surface); 
    surface.getHolder().addCallback(new Callback() { 

     @Override 
     public void surfaceCreated(SurfaceHolder holder) { 
      // Do some drawing when surface is ready 
      Canvas canvas = holder.lockCanvas(); 
      canvas.drawColor(Color.RED); 
      holder.unlockCanvasAndPost(canvas); 
     } 

     @Override 
     public void surfaceDestroyed(SurfaceHolder holder) { 
     } 

     @Override 
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
     } 
    }); 
} 
} 
+0

감사합니다. 진짜로 일하는 첫번째 결정! – user1752669