2013-08-06 19 views
19

Sto costruendo la mia prima app per Android, ed è già un po 'confuso. Uso gli schemi Elenco/dettaglio perché sono ciò che si adatta alle circostanze, ma poiché sto sviluppando sia per dispositivi mobili che per tablet, mi sta un po 'sfuggendo di mano. Per ogni schermata (elenco/dettaglio di una schermata), vengono creati quattro file. ListActivity, ListFragment, DetailActivity, DetailFragment. Avendo quattro schermate fino ad ora, e letteralmente avviando il progetto, ho 12 file, più tre file helper per una tabella di database.Progetto Android: Il modo migliore per organizzare i file

Quello che sto chiedendo è qual è il modo migliore per organizzare questo? Uso Android Studio e sembra che non possa ordinare i file in cartelle senza inserirli in pacchetti separati. Così faccio qualcosa come com.domain.app.screen1. (Fragments | Activities), com.domain.app.screen2. (Fragments | Activities) e così via? O lo sopporto? O c'è un modo migliore per farlo?

se devo essere poco chiaro, fammelo sapere e cercherò di chiarire in su

+0

Non consiglio nemmeno di pensare ai frammenti finché non hai fatto almeno un paio di app diverse usando solo le attività. –

+0

Non utilizzerei i frammenti, ma dal momento che ho intenzione di iniziare con un'applicazione per tablet, tutto tranne un flusso List/Detail sembra stupido per i miei scopi. Mi sto prendendo il controllo di loro, anche facendoli comunicare, è solo come li organizzo che è il problema. Questo e Android Studio rende automaticamente i frammenti e le attività, quindi non è così difficile –

risposta

11

Per quanto ne so, non v'è alcuna convenzione, ma qui è un esempio di come si può mettere il i file in pacchetti:

  • mainPackage
    • LauncherFragment
    • LauncherActivity
    • MyApplication
  • uiPackage
    • DetailsFragment
    • DetailsActivity
    • OtherTabletFragment
  • viewPackage
    • visualizzazioni personalizzate
  • databasePackage
    • MainContentProvider
    • MainDBHelper
    • SecondContentProvider
    • SecondDBHelper
  • dataPackage
    • CustomAdapter
  • utilsPackage
    • xmlUtils
    • textutils

e molti altri. Puoi cercare i progetti android su GitHub e dare un'occhiata.

+5

[Ecco un buon esempio di tale struttura] (https://github.com/owncloud/android/tree/master/src/com/owncloud/ android) –

+0

buon esempio, grazie per il link – buzeeg

+0

È totalmente sbagliato/inutile ... –

21

Buono spiegare con @Eric Oestrich:

Scrivi medio-grande applicazione Android richiede avendo struttura del codice. Nel creare il nostro ultimo progetto di sviluppo Android, mi sono imbattuto in una struttura che mi ha aiutato.

codice Java:

  • com.example

    • attività

      Contiene tutte le attività. Le classi sono tutte denominate con Attività alla fine. In questo modo, puoi immediatamente sapere di cosa si tratta leggendo il codice Java che non ha il nome completo del pacchetto.

    • adattatori

    Contiene tutti gli adattatori.

    • autenticatore

    Contiene tutte le classi relative alla firma di un utente in. Creo un account locale e avere tutte le classi legate insieme è molto utile.

    • dati

    Contiene tutte le classi legate alla gestione dei dati, come ContentProvider e SQLiteHelper.

    • data.migrations

    Contiene tutte le mie migrazioni SQLite.

    • frammenti

    Contiene tutti i frammenti.

    • aiutanti

    Contiene classi di supporto. Una classe helper è un posto dove inserire il codice che viene utilizzato in più di un posto. Ho un DateHelper per esempio. La maggior parte dei metodi sono statici.

    • interfacce

    Contiene tutte le interfacce.

    • modelli

    Contiene tutti i modelli locali. Durante la sincronizzazione da un'API HTTP analizzo il JSON in questi oggetti Java usando Jackson. Ho anche inserito le righe del cursore in questi modelli.

    • preferenze

    Contiene tutte le classi per preferenze personalizzate. Durante la creazione delle preferenze ho richiesto un PreferenceDialog personalizzato e una PreferenceCategory personalizzata. Vivono qui.

    • sincronizzazione

    Contiene tutte le classi relative alla sincronizzazione. Io uso un SyncAdapter per estrarre i dati da un'API HTTP. Oltre a SyncAdapter è richiesto un SyncService, quindi ho creato un pacchetto.

Layout:

  • Attività nome layout aprono con activity_
  • iniziare
  • layout Adattatore nome fila con row_ nome
  • Frammento layout iniziare con fragment_
+2

QUESTO deve essere accettato. –

Problemi correlati