Autore Topic: Miglior metodo per inizializzare il layout invece dell'onCreate  (Letto 449 volte)

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Miglior metodo per inizializzare il layout invece dell'onCreate
« il: 15 Dicembre 2013, 07:40:08 CET »
0
Salve a tutti,
qual'è il modo migliore per inizializzare il layout di un activity? Per inizializzare intendo modificare le dimensioni, disegnare le bitmap, cose di questo tipo. Come sapete non è possibile metterle nell'onCreate perché a quel punto le dimensioni ancora non sono note.
Ho provato questo codice:
Codice (Java): [Seleziona]
ViewTreeObserver vto = getWindow().getDecorView().findViewById(android.R.id.content).getViewTreeObserver();
                vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {

                    }
                });
ma il problema è che questo codice viene eseguito più di una volta, mentre a me interessa inizializzare il layout una volta sola.

Come si può fare?

Grazie

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Miglior metodo per inizializzare il layout invece dell'onCreate
« Risposta #1 il: 18 Dicembre 2013, 14:45:24 CET »
0
Qualche idea?

Offline Alessio_roma™

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
    • www.blogarm.tk
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7 ultimate x64, Ubuntu 14.04
Re:Miglior metodo per inizializzare il layout invece dell'onCreate
« Risposta #2 il: 18 Dicembre 2013, 16:19:40 CET »
0
dai qualche dettaglio più,ad esempio,inizializzare il layout dove? in una qualsiasi classe? o in una Activity?

Nel secondo caso ti basta mettere il codice che sto per scriverti dentro il metodo onCreate()
Codice (Java): [Seleziona]
setContentView(R.layout.nome_file_layout);dove nome_file_layout si riferisce ad un file xml con quel nome dentro la cartella res\layout\
di solito quando crei il progetto c'è già impostato R.layout.activity_main,ti basta solo riempirlo editandolo e seguendo le linee guida dei layout xml,altrimenti se non devi fare cose troppo particolari puoi creare il layout utilizzando la programmazione,però prima di aggiungere altro vorrei leggere la tua risposta.
I MIEI SITI:
RPG & Fantasy -> La Fucina di Harad
Pagina personale -> Il Web di Alessio_roma™

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Miglior metodo per inizializzare il layout invece dell'onCreate
« Risposta #3 il: 18 Dicembre 2013, 16:46:18 CET »
0
dai qualche dettaglio più,ad esempio,inizializzare il layout dove? in una qualsiasi classe? o in una Activity?
Hai per caso letto il mio primo post? Mi sa di no. :D

Offline Alessio_roma™

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
    • www.blogarm.tk
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7 ultimate x64, Ubuntu 14.04
Re:Miglior metodo per inizializzare il layout invece dell'onCreate
« Risposta #4 il: 18 Dicembre 2013, 17:02:45 CET »
0
Hai per caso letto il mio primo post? Mi sa di no. :D
l'ho letto ma non è chiaro,comunque sia per fare tutto quello che dici basta inserire gli elementi nel layout xml e settarlo dal metodo onCreate()

se il problema è quello delle dimensioni puoi fare un getWidth() e un getHeight() del layout dopo che è avvenuto il focus della finestra,in questo modo:

Codice (Java): [Seleziona]
public class MainActivity extends Activity{
RelativeLayout RL;
int RL_width,RL_height;

@Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                RL = new RelativeLayout(this);
                setContentView(RL);
}


public void onWindowFocusChanged(boolean hasFocus) {
            super.onWindowFocusChanged(hasFocus);
            RL_height=RL.getHeight();
            RL_width=RL.getWidth();
}

}

in questo modo ottieni le misure esatte del layout,anche se non so dirti se lo stesso vale per un layout associato ad un file xml,in questo caso quando dovevo fare la tua stessa cosa avevo optato per la programmazione senza l'uso di xml
I MIEI SITI:
RPG & Fantasy -> La Fucina di Harad
Pagina personale -> Il Web di Alessio_roma™