Il layout non ha un metodo onDraw, mentre la view ce l'ha.
Il layout può avere un background, però?
Proviamo... questa materia è difficilissima, ma prima o poi, con l'esercizio, ci dobbiamo pur arrivare, a padroneggiarla!
public void Disegna(){
Paint pennello=new Paint();
Bitmap tela=Bitmap.createBitmap(larghezza,altezza,Bitmap.Config.ARGB_8888);
Canvas dipinto=new Canvas(tela);
pennello.setColor(Color.RED);
dipinto.drawRect(100, 100,400,400,pennello);
muro=(RelativeLayout)findViewById(R.id.muro);
muro.setBackgroundDrawable(new BitmapDrawable(tela));
}
@Override
public void onWindowFocusChanged(boolean hasfocus){
muro=(RelativeLayout)findViewById(R.id.muro);
altezza=muro.getHeight();
larghezza=muro.getWidth();
Disegna();
}
Dunque il RelativeLayout ha un drawable.Ma anche la View può essere trattata alla stessa maniera:
public class MainActivity extends Activity {
int larghezza;
int altezza;
RelativeLayout muro;
MyView myView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myView =new MyView(this);
setContentView(myView);
}
private void Disegna(){
Bitmap tela=Bitmap.createBitmap(larghezza, altezza, Bitmap.Config.ARGB_8888);
Canvas dipinto=new Canvas(tela);
Paint pennello=new Paint();
pennello.setColor(Color.BLUE);
dipinto.drawRect(100,100,200,200,pennello);
myView.setBackgroundDrawable(new BitmapDrawable(tela));
}
@Override
public void onWindowFocusChanged(boolean hasfocus){
altezza=myView.getHeight();
larghezza=myView.getWidth();
Disegna();
}
class MyView extends View{
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
}
Però il Layout non ha un metodo onDraw. Con queste procedure, sia per il Layout sia per la View dipingiamo una tela e poi ce la mettiamo.La View può essere disegnata da sé, mentre il Layout no. Forse perché è l'elemento radice... Non è facile penetrare nella filosofia di questo sistema operativo!
Nessun commento:
Posta un commento