Autore Topic: Layout tramite XML o tramite Java?  (Letto 337 volte)

Offline 0v3rl04d

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy note 3 N9005
  • Sistema operativo:
    Arch Linux
Layout tramite XML o tramite Java?
« il: 12 Febbraio 2016, 18:50:59 CET »
0
Ciao a tutti, sono un neofita della programmazione Android. Mi sto cimentando da poco con piccole app per fare qualche test. Sto seguendo la guida ufficiale di Google sul sito per gli sviluppatori.

Vi pongo il mio quesito... In pratica, seguendo la guida mi viene detto di creare la parte del layout sul file XML e poi di sfruttare la varie view in java tramite i richiami [at] sul file XML. E fin quì mi sembra tutto logico. Mi ritrovo alla fine dell'esercizio con questo codice XML:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:orientation="horizontal"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   app:layout_behavior="@string/appbar_scrolling_view_behavior"
   tools:showIn="@layout/activity_my">
    <EditText android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>

dove l'esercizio prevedeva di creare una EditText e un Button. Questa è la parte iniziale "Build your firt app" sul sito developer.android.com.

Andando avanti, mi fa creare una nuova activity che riceve il messaggio presente in EditText e lo visualizza in questa nuova activity. La cosa che mi fa strano è che inceve di creare le parti di layout tramite XML, me le fa creare tramite Java:

Codice: [Seleziona]
TextView textView = new TextView(this);
   textView.setTextSize(40);
   textView.setText(message);

   RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
   layout.addView(textView);

Io per provare, ho voluto modificare questa parte ricreando in XML :

Codice: [Seleziona]
<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/text_test"
        android:textSize="40dp" />
Con il comando "android:id="@+id/text_test" è come fare una "new" in java da quello che ho capito (correggetemi se sbalgio)
In java poi ho cambiato in questo modo il codice:
Codice: [Seleziona]
Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        TextView textView = (TextView) findViewById(R.id.text_test);
        textView.setText(message);

Il risultato è che alla fine l'app funziona nello stesso modo. Visualizza il messagio come faceva sequendo la guida ufficiale.

A mio parere trovo più corretto scrivere tutta la parte di layout su XML e la parte non grafica in Java.

Ho fatto una cazzata oppure è indifferente fare come ha fatto la guida o fare come ho fatto io?

Spero di essermi spiegato in un modo comprensibile per la gente che non si trova nella mia testa malata XD

Grazie a tutti.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1185
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Layout tramite XML o tramite Java?
« Risposta #1 il: 12 Febbraio 2016, 19:50:17 CET »
0
Quasi tutti i parametri xml hanno il relativo codice java.
Mettere un id non vuol dire fare new.
Con new crei un istanza di un oggetto. L' id nel xml ti serve solo perché puoi ricavare la tua view tramite findViewById e relativi cast

Non è meglio o peggio qualcosa. Sicuramente è molto più veloce xml. Inoltre hai un idea di come verrà fuori la grafica.


Offline 0v3rl04d

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy note 3 N9005
  • Sistema operativo:
    Arch Linux
Re:Layout tramite XML o tramite Java?
« Risposta #2 il: 12 Febbraio 2016, 21:24:51 CET »
0
Ok ottimo. In ogni caso è corretto in entrambi i modi? Quindi nella guida developer ufficiale fanno vedere che si può fare in entrambi i modi ma non lo dicono. Mette un po' in confusione...

Offline tonno16

  • Utente storico
  • *****
  • Post: 1185
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Layout tramite XML o tramite Java?
« Risposta #3 il: 13 Febbraio 2016, 00:00:56 CET »
0
A parte quel caso trovò la DOC do gran lunga migliore rispetto alla DOC per windows phone

Offline 0v3rl04d

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy note 3 N9005
  • Sistema operativo:
    Arch Linux
Re:Layout tramite XML o tramite Java?
« Risposta #4 il: 13 Febbraio 2016, 15:27:39 CET »
0
Non so come sia quella per Windows Phone ma anche io trovo che quella Google sia fatta molto bene. Questo è stato un piccolo dettaglio che secondo me poteva essere specificato.

In ogni caso grazie per le risposte

Offline iClaude

  • Utente normale
  • ***
  • Post: 183
  • Respect: +13
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 10
Re:Layout tramite XML o tramite Java?
« Risposta #5 il: 15 Febbraio 2016, 10:47:41 CET »
0
Se è possibile è meglio definire il layout in XML.
Soprattutto per una questione di chiarezza: è meglio separare la definizione della UI dalla logica di funzionamento dell'app.
Inoltre un file XML potrebbe essere modificato senza troppi danni anche da un non programmatore, il che potrebbe tornare utile.
it.m.wikipedia.org/wiki/Model-View-Controller
« Ultima modifica: 15 Febbraio 2016, 10:53:14 CET da iClaude »