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