2012-10-31 86 views
4

我的關於Android UI的問題。 當我們與XML的佈局工作,我們寫的(例如)組合畫布和佈局(Android)

setContentView(R.layout.main);

當我們與2D圖形的工作,我們寫

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

所以,如果我想同時使用?我需要使用layout-xml,並且屏幕的一部分是fir繪畫(Canvas)。我讀過關於surfaceView的內容,但簡單使用Canvas怎麼樣?

+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