2010-03-10 52 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

不要替换画布,只需使用片段矩形。