Il team di progettazione dei materiali di Google definisce la funzionalità delle barre di navigazione in basso in Android come segue:
Le barre di navigazione in basso facilitano l'esplorazione e il passaggio da una vista all'altra in un unico tocco.
Toccando un'icona di navigazione in basso si accede direttamente alla vista associata o si aggiorna la vista correntemente attiva.
Secondo le linee guida ufficiali sulla progettazione del materiale per la barra di navigazione in basso, dovrebbe essere usato quando la tua app ha:
Un esempio di un'app popolare che implementa la barra di navigazione in basso è l'app Google+ per Android di Google, che la utilizza per navigare verso diverse destinazioni dell'app. Puoi vederlo tu stesso scaricando l'app Google+ dal Google Play Store (se non lo hai già sul tuo dispositivo). Il seguente screenshot proviene dall'app Google+ che mostra una barra di navigazione in basso.
In questo post, imparerai come visualizzare gli elementi del menu all'interno di una barra di navigazione in basso in Android. Useremo il BottomNavigationView
API per eseguire l'attività. Per un ulteriore bonus, imparerai anche come utilizzare la funzione di modelli di Android Studio per avviare rapidamente il tuo progetto con una barra di navigazione in basso.
Un esempio di progetto (in Kotlin) per questo tutorial può essere trovato sul nostro repository GitHub in modo da poter seguire facilmente.
Per poter seguire questo tutorial, avrai bisogno di:
Avvia Android Studio e crea un nuovo progetto (puoi chiamarlo BottomNavigationDemo
) con un'attività vuota chiamata Attività principale
. Assicurati di controllare anche il Include il supporto Kotlin casella di controllo.
Per iniziare a usare BottomNavigationView
nel tuo progetto, assicurati di importare il supporto per la progettazione e anche l'artefatto di supporto Android. Aggiungi questi ai tuoi moduli build.gradle file per importarli.
dipendenze implementazione 'com.android.support:design:27.0.2'
Inoltre, visita il tuo res / layout / activlty_main.xml file per includere il BottomNavigationView
widget di. Questo file di layout include anche a ConstraintLayout
e a FrameLayout
. Si noti che il FrameLayout
servirà come contenitore o segnaposto per i diversi frammenti che verranno posizionati su di esso ogni volta che si fa clic su una voce di menu nella barra di navigazione in basso. (Ci arriveremo a breve.)
Qui abbiamo creato un BottomNavigationView
widget con l'id navigationView
. La documentazione ufficiale dice che:
BottomNavigationView
rappresenta una barra di navigazione in basso standard per l'applicazione. Si tratta di un'implementazione della navigazione bottom design del materiale.
Le barre di navigazione in basso rendono facile per gli utenti esplorare e passare da una vista all'altra in un solo tocco. Dovrebbe essere usato quando l'applicazione ha da tre a cinque destinazioni di livello superiore.
Gli attributi importanti che dovresti prendere nota di ciò sono stati aggiunti al nostro BottomNavigationView
siamo:
app: itemBackground
: questo attributo imposta lo sfondo delle nostre voci di menu sulla risorsa data. Nel nostro caso, abbiamo appena dato un colore di sfondo. app: itemIconTint
: imposta la tinta applicata alle icone delle nostre voci di menu.app: itemTextColor
: imposta i colori da utilizzare per i diversi stati (normale, selezionato, focalizzato, ecc.) del testo della voce di menu.Per includere le voci di menu per la barra di navigazione in basso, possiamo usare l'attributo App: Menu
con un valore che punta a un file di risorse di menu.
Ecco il res / menu / navigation.xml file di risorse del menu:
Qui abbiamo definito a Menu
usando il che funge da contenitore per le voci di menu. Un
crea a Elemento del menu
, che rappresenta un singolo oggetto in un menu. Come puoi vedere, ciascuno
ha un ID, un'icona e un titolo.
Quindi, inizializzeremo un'istanza di BottomNavigationView
. L'inizializzazione avverrà all'interno onCreate ()
nel MainActivity.kt.
import android.os.Bundle import android.support.design.widget.BottomNavigationView import android.support.v7.app.AppCompatActivity class MainActivity: AppCompatActivity () lateinit var toolbar: ActionBar sovrascrive fun onCreate (savedInstanceState: Bundle?) super. onCreate (savedInstanceState) setContentView (R.layout.activity_main) toolbar = supportActionBar !! val bottomNavigation: BottomNavigationView = findViewById (R.id.navigationView)
Ora possiamo eseguire l'app!
Come puoi vedere, la nostra barra di navigazione in basso è visualizzata nella parte inferiore della schermata dell'app. Non succederà nulla se si fa clic su uno degli elementi di navigazione in quella posizione; gestiremo quella parte nella sezione successiva.
Ora, vediamo come configurare gli eventi di clic per ciascuno degli elementi nella barra di navigazione in basso. Ricorda che facendo clic su qualsiasi elemento in esso dovrebbe portare l'utente a una nuova destinazione nell'app.
// ... private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener item -> when (item.itemId) R.id.navigation_songs -> return @ OnNavigationItemSelectedListener true R.id.navigation_albums -> return @ OnNavigationItemSelectedListener true R.id .navigation_artists -> return @ OnNavigationItemSelectedListener true false override fun onCreate (savedInstanceState: Bundle?) // ... bottomNavigation.setOnNavigationItemSelectedListener (mOnNavigationItemSelectedListener) // ...
Qui abbiamo chiamato il metodo setOnNavigationItemSelectedListener
. Ecco cosa fa secondo la documentazione ufficiale:
Imposta un listener che verrà avvisato quando viene selezionato un oggetto di navigazione in basso.
Abbiamo usato il quando
espressione per eseguire diverse azioni in base alla voce di menu su cui è stato fatto clic, gli ID delle voci di menu fungono da costanti per il quando
espressione. Alla fine di ciascuno quando
ramo, torniamo vero
.
Quindi passiamo il nostro mOnNavigationItemSelectedListener
ascoltatore a setOnNavigationItemSelectedListener ()
come argomento.
Essere consapevoli del fatto che esiste un altro metodo simile chiamato setOnNavigationItemReselectedListener
, che verrà notificato quando l'elemento di navigazione in basso attualmente selezionato viene riselezionato.
Successivamente, creeremo le diverse pagine (o frammenti) per ciascuna voce di menu nel cassetto di navigazione in modo che quando si fa clic o si tocchi una voce di menu, venga visualizzato un diverso frammento o pagina Android.
Inizieremo con il SongsFragment.kt classe, e dovresti seguire un processo simile per le restanti due classi di frammenti-AlbumsFragment.kt e ArtistsFragment.kt.
Ecco il mio SongsFragment.kt:
import android.os.Bundle import android.support.v4.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup class SongsFragment: Fragment () override fun onCreateView (inflater: LayoutInflater, container : ViewGroup ?, savedInstanceState: Bundle?): View? = inflater.inflate (R.layout.fragment_songs, container, false) oggetto companion fun newInstance (): SongsFragment = SongsFragment ()
Inoltre, ecco il mio R.layout.fragment_songs
:
Quando viene cliccato uno qualsiasi degli elementi del menu, apriamo il frammento corrispondente e cambiamo anche il titolo della barra di azione.
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener item -> when (item.itemId) R.id.navigation_songs -> toolbar.title = "Songs" val songsFragment = SongsFragment.newInstance () openFragment (songsFragment) return @ OnNavigationItemSelectedListener true R.id.navigation_albums -> toolbar.title = "Album" val albumsFragment = AlbumsFragment.newInstance () openFragment (albumsFragment) return @ OnNavigationItemSelectedListener true R.id.navigation_artists -> toolbar.title = "Artists" val artistsFragment = ArtistsFragment.newInstance () openFragment (artistsFragment) return @ OnNavigationItemSelectedListener true false private fun openFragment (framment: Fragment) val transaction = supportFragmentManager.beginTransaction () transaction.replace (R.id.container, fragment) transaction.addToBackStack ( null) transaction.commit ()
Qui stiamo usando un metodo chiamato openFragment ()
che semplicemente usa il FragmentTransaction
per aggiungere il nostro frammento all'interfaccia utente.
Ora esegui di nuovo il progetto per vedere come funziona!
Ogni volta che si fa clic su qualsiasi voce di menu, l'utente verrà portato a un nuovo frammento.
Nota che quando abbiamo più di quattro voci di menu nella barra di navigazione in basso, vale a dire. nel BottomNavigationView
-quindi il sistema Android attiva automaticamente la modalità Shift. In questa modalità, quando si fa clic su una qualsiasi delle voci di menu, gli altri elementi a destra o a sinistra dell'elemento selezionato vengono spostati.
Ora che hai imparato a conoscere le API coinvolte per creare una barra di navigazione in basso da zero in Android, ti mostrerò un collegamento che renderà più veloce la prossima volta. Puoi semplicemente usare un modello invece di codificare una barra di navigazione da zero.
Android Studio fornisce modelli di codice che seguono le best practice di progettazione e sviluppo di Android. Questi modelli di codice esistenti (disponibili in Java e Kotlin) possono aiutarti a avviare rapidamente il tuo progetto. Uno di questi modelli può essere utilizzato per creare una barra di navigazione in basso.
Per utilizzare questa comoda funzionalità per un nuovo progetto, innanzitutto avviare Android Studio.
Immettere il nome dell'applicazione e fare clic su Il prossimo pulsante. Puoi lasciare i valori predefiniti così come sono nel Target dispositivi Android dialogo.
Clicca il Il prossimo pulsante di nuovo.
Nel Inserisci un'attività al cellulare finestra di dialogo, selezionare Attività di navigazione in basso. Clicca il Il prossimo pulsante di nuovo dopo.
Nell'ultima finestra di dialogo è possibile rinominare l'attività o modificarne il nome o il titolo del layout, se lo si desidera. Infine, fai clic sul finire pulsante per accettare tutte le configurazioni.
Android Studio ci ha ora aiutato a creare un progetto con un'attività di navigazione in basso. Veramente cool!
Si consiglia vivamente di esplorare il codice generato.
In un progetto Android Studio esistente, per utilizzare questo modello, basta andare su File> Nuovo> Attività> Attività di navigazione in basso.
Tieni presente che i modelli inclusi in Android Studio sono adatti per layout semplici e applicazioni di base, ma se vuoi davvero avviare la tua app, potresti prendere in considerazione alcuni dei modelli di app disponibili da Envato Market.
Sono un enorme risparmio di tempo per gli sviluppatori esperti, aiutandoli a tagliare la barra della creazione di un'app da zero e concentrare i loro talenti invece sulle parti uniche e personalizzate della creazione di una nuova app.
In questo tutorial, hai imparato come creare una barra di navigazione in basso in Android utilizzando il BottomNavigationView
API da zero. Abbiamo anche esplorato come utilizzare facilmente e rapidamente i modelli di Android Studio per creare un'attività di navigazione in basso.
Consiglio vivamente di verificare le linee guida sulla progettazione dei materiali ufficiali per la barra di navigazione in basso per ulteriori informazioni su come progettare e utilizzare correttamente la barra di navigazione in basso in Android.
Per ulteriori informazioni sulla codifica per Android, consulta alcuni dei nostri altri corsi e tutorial qui su Envato Tuts+!