我使用的是Android 2.1和Eclipse。
我已经定义了一个LinearLayout,其中包含两个具有尺寸的组件:250 x 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);
到目前为止,这么好。我在模拟器屏幕上看到两个垂直组件。
但是,在我的Meter View类中,onDraw中画布的大小是我的模拟器屏幕的大小,即480 x 800。
@Override
protected void onDraw(Canvas canvas) {
int w = canvas.getWidth();
int h = canvas.getHeight();
Log.i(TAG, " onDraw, w: " + w + ", h: " + h);
}
我希望画布大小为250 x 250,以便我可以将此画布传递给绘图例程。现在,我的绘图例程正在我的LinearLayout定义的250 x 250位图之外绘制。
我意识到我可以通过翻译画布来使我的画布绘制例程工作,但如果我可以暂时用新的画布覆盖原始画布,它会更清晰。
我知道我可以通过以下方式定义自己的画布:
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
如何用我的新画布替换View类创建的画布? 任何帮助将不胜感激。
查尔斯
答案 0 :(得分:1)
你应该使用视图的宽度和高度,而不是画布,两者都可以通过getWidth()和getHeight()获得。然后将这些尺寸传递给您的绘图程序。
答案 1 :(得分:1)
请勿替换Canvas,只需使用剪辑矩形。