2010-03-10 53 views
1

我正在使用Android 2.1和Eclipse。如何覆蓋我的視圖中的畫布?

我已經定義了一個LinearLayout中與具有尺寸兩個部分組成:250×250

LinearLayout ll = new LinearLayout(this); 
ll.setOrientation(LinearLayout.VERTICAL); 

LinearLayout.LayoutParams llp = 
    new llp.LayoutParams(250, 250); 

meter1View = new MeterView(this, "Meter 1"); 
ll.addView(meter1View, llp); 
meter2View = new MeterView(this, "Meter 2"); 
ll.addView(meter2View, llp); 
ScrollView scrollView = new ScrollView(this); 
scrollView.addView(ll); 
setContentView(scrollView); 

到目前爲止,一切都很好。我在仿真器屏幕上看到兩個垂直組件。

然而,在我的表視圖類中的onDraw畫布的尺寸爲480 800

@Override 
protected void onDraw(Canvas canvas) { 
    int w = canvas.getWidth(); 
    int h = canvas.getHeight(); 
    Log.i(TAG, " onDraw, w: " + w + ", h: " + h); 
} 

我想畫布大小我模擬器的屏幕,這是大小爲250× 250,以便我可以將此畫布傳遞給繪圖例程。現在,我的繪圖例程在我的LinearLayout定義的250 x 250位圖之外繪製。

我意識到我可以通過平移畫布來使畫布繪製日常工作,但如果我可以用新畫布臨時覆蓋原始畫布,它會更乾淨。

我明白,我可以定義自己的帆布:

Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(b); 

我怎麼能代替由View類與我的新畫布創建畫布? 任何幫助將不勝感激。

查爾斯

回答

1

你應該經由的getWidth()和getHeight使用視圖,而不是畫布的寬度和高度,兩者均可()。然後將這些尺寸傳遞給您的繪圖程序。

1

不要替換畫布,只需使用片段矩形。