Per capire la relazione tra i due, devo prima chiarire una cosa. Dici che " Button
in XML è una vista, ma Button
in Java è una classe" che è vera ma un po 'stretta. Un Button
in XML non è solo un View
ma è anche una classe.
View
è una classe Java. Button
è una sottoclasse di View
. Il layout XML in Android è solo un modo semplice per organizzare un numero di oggetti View
per formare un'interfaccia utente. Tutto ciò che fai in un layout XML può essere fatto in codice Java e può realizzare esattamente la stessa cosa. Android ha questi XML di layout per semplificare il processo.
Considera il seguente esempio. Questi due scenari creeranno la stessa identica interfaccia utente.
Crea interfaccia utente con layout XML:
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" >
<LinearLayout android:id="@+id/left_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Crea interfaccia utente in codice Java:
MainActivity.java
public static final int LEFT_CONTAINER = 0x0710001B;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout parent = new LinearLayout(this);
parent.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
parent.setBackgroundColor(getResources().getColor(android.R.color.black));
LinearLayout child = new LinearLayout(this);
child.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
child.setId(LEFT_CONTAINER);
parent.addView(child);
setContentView(parent);
}
Ora questo è un layout molto semplice, quindi il codice richiesto per ciascun metodo è relativamente leggero. Se lo ridimensioniamo a un'interfaccia utente con più contenitori e più controlli, il metodo del codice Java inizia a diventare davvero disordinato e soggetto a errori. Stai anche creando la possibilità di più dipendenze sulla tua classe MainActivity
poiché contiene gli ID dei layout al suo interno.
Utilizzando il layout XML, limita la maggior parte dei problemi di layout a un file separato e riduci la quantità di codice che deve essere scritta per creare l'interfaccia utente poiché la classe genitore Activity
di Android gestirà tutto ciò per te. Inoltre, puoi ridurre le dipendenze incrociate facendo in modo che tutti gli ID di layout e di visualizzazione siano limitati alla tua classe R
che Android genera per gli identificatori.