Da quanto ho capito, XML non è utilizzato per i layout e per impostare l'aspetto di un'attività?
Il mio libro dice che i file XML vengono convertiti in codice Java, ma allora, perché non scrivere semplicemente tutto in Java?
Da quanto ho capito, XML non è utilizzato per i layout e per impostare l'aspetto di un'attività?
Il mio libro dice che i file XML vengono convertiti in codice Java, ma allora, perché non scrivere semplicemente tutto in Java?
È perché più semplice - gli strumenti possono essere scritti per manipolare un documento XML molto più facilmente di capire il codice java, quindi il layout può essere creato e modificato da un semplice strumento che non ha bisogno di essere anche un parser java.
È anche più facile per le persone descrivere un layout in XML che direttamente in java.
Questa tecnica è utilizzata da molte cose, ad esempio WSDL che descrive un'interfaccia di servizio Web e viene convertita in codice (abbastanza complesso) da uno strumento specializzato. Aiuta lo sviluppatore a concentrarsi su un aspetto senza preoccuparsi dell'implementazione e consente di scrivere strumenti per generare diversi tipi di codice (ad esempio, il wsdl può essere trasformato in uno stub del server e anche un'API client)
Perché i progettisti Android hanno deciso di implementarlo in questo modo:)
In linea di principio, tutto potrebbe essere scritto in Java. Microsoft lo ha fatto per WinForms: la descrizione del modulo viene salvata come il file * .designer.cs generato automaticamente (o una regione generata nella prima versione di .NET framework).
Ogni metodo ha i suoi pro e contro. Memorizzando l'interfaccia utente come XML, potrebbe essere più semplice analizzare in modo che il progettista possa essere più semplice da implementare. Tuttavia, è un altro linguaggio che lo sviluppatore può imparare: una nuova lingua di dominio specifica (UI), non solo XML. Memorizzando l'interfaccia utente come lingua di destinazione (Java, C # ...), l'implementazione del progettista potrebbe essere più complessa, ma il codice per la creazione dell'interfaccia utente è già noto agli sviluppatori. Un altro vantaggio è che gli strumenti esistenti di refact code possono funzionare senza modifiche.
Sono in ritardo per la festa, ma qui ci sono i miei due centesimi sull'argomento, e ho avuto la fortuna di rispondere a questa domanda per qualcuno che ha scritto una grande app con oltre 70 schermi e tonnellate di logica aziendale puramente in Java. Ecco perché non è consigliabile scrivere un'app per Android Java / Kotlin pura:
Corretto separazione delle responsabilità - i programmi con interfaccia utente sono preferibilmente implementati con una netta separazione tra come un'interfaccia sembra e come interfaccia si comporta . Mentre potresti non essere in grado di estrarre il 100% delle impostazioni relative al layout dal tuo codice Java (o Kotlin), il layout stesso sarebbe definito dal file XML di un'attività. Puoi vedere tutti i componenti in un unico posto e, se necessario, puoi accedervi dalla classe Java / Kotlin dell'attività e manipolarli a livello di codice ( ad es. per associare i listener di eventi). La separazione delle responsabilità dovrebbe essere un motivo convincente per utilizzare XML per le attività della tua app Android.
Velocità di sviluppo - Android Studio, come altri IDE moderni che supportano lo sviluppo di Android, consente di visualizzare l'anteprima del layout in base al file XML senza compilare l'intera app. Se dovessi codificare l'intera app solo nelle classi di attività, probabilmente dovresti compilare l'app ogni volta che vuoi rivedere le modifiche al layout, e questo è oltre l'inefficienza. Come nota a margine, potrebbero esserci strumenti / plug-in che visualizzano l'anteprima del layout solo in base al codice Java / Kotlin, ma non ne sono a conoscenza. Preferiresti vedere le modifiche del layout in pochi secondi o aspettare un minuto o due per l'AVD (dispositivo virtuale Android) o il tuo dispositivo di debug per far funzionare l'app compilata? Funziona anche, o hai un bug da qualche parte? Bastano pochi ordini di grandezza per definire il tuo layout Android in XML. Anche questo dovrebbe essere un motivo valido.
Leggibilità del codice - se non sei ancora convinto e scrivi la tua app come sviluppatore individuale, sicuramente puoi capire il tuo codice. Potresti anche abbattere la costruzione delle viste in metodi, creare bellissime astrazioni, riutilizzare componenti e codice con modelli di progettazione all'avanguardia. Ma cosa succede quando un secondo sviluppatore entra nell'immagine? Lui o lei dovrebbe non solo capire il tuo codice, ma anche setacciare visualizzare il codice da codice di comportamento (vedere punto 1) e cerca di entrare nella tua testa e decifrare cosa ti ha attraversato la mente quando hai costruito il codice. E ricorda che il codice di layout in Android può diventare molto prolisso, quindi non importa quanto magnifico sia il tuo codice scritto, nessuno vuole davvero incorporarsi un progetto che li costringa a leggere una classe con oltre 1000 linee di codice per ogni singolo Attività Android. Il più grande vantaggio di scrivere la tua app in XML, in termini di leggibilità, è che XML è strutturato in gerarchia . Le relazioni di layout tra gli elementi sono immediatamente visibili. Se costruisci la tua app per Android senza XML, aggiungi i figli ai loro genitori in modo programmatico. Non puoi indentare il codice in modo che rifletta la gerarchia degli elementi sui tuoi schermi.
Materiali online - anche se potrebbe non essere un punto cruciale, lo trovo comunque valido. I materiali online sono maggiormente disponibili per l'installazione XML + Java / Kotlin, perché è il modo migliore per codificare le app Android. Se rimani bloccato sui problemi di layout, è più probabile trovare qualcuno che ha risolto i problemi di layout con questa configurazione piuttosto che con l'impostazione di sola codifica. Potrebbe essere necessario leggere il manuale (sempre incoraggiato) più spesso. Certo, potresti trovare alcuni sviluppatori aggressivi online che ti dicono di Leggi il (. *) Manuale , ma non lasciarti ingannare, come anche loro, le cose di Google nella speranza di trovare rapidamente risposte.
Spero che aiuti un po '.
Leggi altre domande sui tag java xml android android-development