Я использую 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 на 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, чтобы я мог передать этот холст процедурам рисования. Прямо сейчас мои процедуры рисования рисуют вне растрового изображения 250 x 250, которое было определено моим LinearLayout.
Я понимаю, что могу заставить свою процедуру рисования холста работать, переведя холст, но было бы чище, если бы я мог временно заменить первоначальный холст новым.
Я понимаю, что могу определить свой собственный холст следующим образом:
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
Как заменить холст, созданный классом View, на мой новый холст?
Любая помощь будет принята с благодарностью.
Charles