2010-03-10 3 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, так что я могу передать этот холст для рисования подпрограмм. Прямо сейчас мои чертежные процедуры выходят за рамки 250 x 250 битмапов, которые были определены моим LinearLayout.

Я понимаю, что я могу сделать свою ручную работу с холстом, чтобы работать, переведя холст, но было бы более чистым, если бы я мог временно переопределить оригинальный холст новым.

Я понимаю, что я могу определить свое собственное полотно:

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

Как я могу заменить холст, созданный видовым класс с моим новым холстом? Любая помощь будет принята с благодарностью.

Чарльз

ответ

1

вы должны использовать ширину и высоту точки зрения, а не холст, оба доступны через GetWidth() и GetHeight(). Затем передайте эти измерения в рутину рисования.

1

Не заменяйте холст, просто используйте вместо него зажим.

Смежные вопросы