Crea un launcher personalizzato su Android

Cosa starai creando

introduzione

Nella sua forma più semplice, un launcher è un'applicazione che effettua le seguenti operazioni:

  • rappresenta la schermata iniziale di un dispositivo
  • elenca e avvia le applicazioni installate sul dispositivo

In altre parole, è l'applicazione che viene visualizzata quando si preme il pulsante Home. A meno che tu non abbia già installato un programma di avvio personalizzato, stai utilizzando il programma di avvio predefinito fornito con l'installazione di Android. Molti produttori di dispositivi hanno i propri launcher predefiniti personalizzati che si conformano al loro aspetto proprietario, ad esempio, Samsung TouchWiz e HTC Sense.

In questo tutorial, creeremo un semplice launcher con un'interfaccia utente di base. Avrà due schermi:

  • una schermata principale che mostra lo sfondo del dispositivo
  • una schermata che mostra le icone e i dettagli delle applicazioni installate sul dispositivo

A proposito, se lavori molto con Android, potresti voler controllare uno dei 1000 modelli di app Android su Envato Market. C'è una grande varietà, quindi sei sicuro di trovare qualcosa lì per aiutarti con il tuo lavoro. Oppure potresti esternalizzare aree che non sono la tua specialità assumendo uno sviluppatore o designer di app su Envato Studio.

Modelli di app Android su Envato Market

1. Requisiti

È necessario che il seguente sia installato e configurato sulla macchina di sviluppo:

  • Android SDK e strumenti della piattaforma
  • Eclipse IDE 3.7.2 o successivo con il plugin ADT
  • un emulatore o dispositivo Android con Android 2.2 o versioni successive

Puoi scaricare l'SDK e gli strumenti della piattaforma nel portale per sviluppatori Android.

2. Impostazione del progetto

Avvia Eclipse e crea un nuovo progetto di applicazione Android. Sto nominando l'applicazione SimpleLauncher, ma puoi chiamarlo come vuoi. Assicurati di utilizzare un pacchetto unico. La versione SDK più bassa supportata dal nostro programma di avvio Froyo e l'SDK di destinazione è Jelly Bean.

Dal momento che non vogliamo creare un Attività, deselezionare Crea attività. Clic finire continuare.

3. Manifestazione del progetto

Il prossimo passo è la modifica di AndroidManifest.xml file aggiungendo due attività. Il primo Attività visualizza la schermata principale. Diamo un nome HomeActivity come mostrato di seguito.

      

Aggiungendo le categorie android.intent.category.HOME e android.intent.category.DEFAULT al intent-filtro gruppo, l'associato Attività si comporta come un lanciatore e si presenta come un'opzione quando si preme il pulsante home del dispositivo.

Abbiamo anche bisogno di impostare il launchMode a singleTask per assicurarsi che solo una istanza di questo Attività è detenuto dal sistema in qualsiasi momento. Per mostrare lo sfondo dell'utente, imposta il tema su Theme.Wallpaper.NoTitleBar.FullScreen.

Il secondo Attività abbiamo bisogno di aggiungere visualizza le applicazioni che sono installate sul dispositivo dell'utente. È anche responsabile del lancio delle applicazioni. Non abbiamo bisogno di alcuna configurazione speciale per questo Attività. Nominalo AppsListActivity.

 

4. Layout di attività

Creare un file XML per HomeActivity classe nel progetto res / layout di cartella e chiamarlo activity_home.xml. Il layout ha un singolo Pulsante che risponde agli eventi click. Facendo clic sul pulsante, l'utente passa dalla schermata iniziale all'elenco delle applicazioni.

 

Quindi, creare un file XML per AppsListActivity classe nel progetto res / layout di cartella e chiamarlo activity_apps_list.xml. Il layout contiene a Visualizzazione elenco che occupa l'intero schermo.

    

Infine, crea un terzo file XML nella stessa posizione e nominalo list_item.xml. Questo file definisce il layout di un elemento nel Visualizzazione elenco. Ogni voce di visualizzazione elenco rappresenta un'applicazione installata sul dispositivo dell'utente. Mostra l'icona dell'applicazione, l'etichetta e il nome del pacchetto. Visualizziamo l'icona dell'applicazione utilizzando un ImageView istanza e TextView istanze per l'etichetta e il nome del pacchetto.

     

5. Implementazione delle classi di attività

HomeActivity

Con i layout dell'applicazione creata, è il momento di crearne due Attività classi. Quando crei le due classi, assicurati che il nome di ogni classe corrisponda a quello che hai specificato prima nel file manifest del progetto.

Crea una nuova classe chiamataHomeActivity e impostare android.app.Activity come sua superclasse.

pacchetto ah.hathi.simplelauncher; importare android.app.Activity; import android.content.Intent; importare android.os.Bundle; importa android.view.View; public class HomeActivity estende Activity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_home);  public void showApps (Visualizza v) Intent i = new Intent (this, AppsListActivity.class); startActivity (i); 

In classe onCreate metodo, invochiamo setContentView, passando nel layout che abbiamo creato in precedenza. Si può ricordare che abbiamo aggiunto un pulsante al activity_home layout che attiva un metodo chiamato showApps. Ora dobbiamo implementare quel metodo nel HomeActivity classe. L'implementazione è piuttosto semplice, creiamo un Intento per il AppsListActivity classe e avviarlo.

AppsListActivity

Creane un altro Attività classe di nome AppsListActivity e impostare android.app.Activity come sua superclasse. In classe onCreate metodo, invochiamo setContentView, passando nel activity_apps_list layout che abbiamo creato in precedenza.

pacchetto ah.hathi.simplelauncher; importare android.app.Activity; import android.content.Intent; importare android.os.Bundle; importa android.view.View; public class AppsListActivity estende Activity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); 

Anche se il nostro launcher non è ancora finito, puoi salvare ed eseguire la tua applicazione a questo punto. Quando premi il tasto home del dispositivo, dovresti vedere un pop-up che ti chiede quale programma di avvio desideri utilizzare.

Se si sceglie Casa semplice Launcher, dovresti vedere la tua nuova schermata iniziale con un solo pulsante nell'angolo in alto a destra dello schermo. Dovresti anche vedere lo sfondo corrente del tuo dispositivo.

Torna a Eclipse e crea una classe chiamata AppDetail che conterrà i dettagli di un'applicazione, il nome del pacchetto, l'etichetta e l'icona dell'applicazione. L'interfaccia è piuttosto semplice come puoi vedere qui sotto.

pacchetto ah.hathi.simplelauncher; import android.graphics.drawable.Drawable; AppDetail di classe pubblica etichetta CharSequence; Nome CharSequence; Icona disegnabile; 

6. Recupero delle applicazioni

Nel loadApps metodo del AppsListActivity classe, usiamo il queryIntentActivities metodo del PackageManager classe per andare a prendere tutto il intenti che hanno una categoria di Intent.CATEGORY_LAUNCHER. La query restituisce un elenco delle applicazioni che possono essere avviate da un launcher. Passiamo in rassegna i risultati della query e aggiungiamo ogni elemento a un elenco chiamato applicazioni. Dai un'occhiata al seguente frammento di codice per chiarimenti.

gestore privato di PackageManager; Elenco privato Apps; private void loadApps () manager = getPackageManager (); apps = new ArrayList(); Intenzione i = nuovo intento (Intent.ACTION_MAIN, null); i.addCategory (Intent.CATEGORY_LAUNCHER); Elenco availableActivities = manager.queryIntentActivities (i, 0); for (ResolveInfo ri: availableActivities) AppDetail app = new AppDetail (); app.label = ri.loadLabel (manager); app.name = ri.activityInfo.packageName; app.icon = ri.activityInfo.loadIcon (manager); apps.add (app); 

7. Visualizzazione dell'elenco di applicazioni

Con il applicazioni variabile contenente tutti i dettagli di cui abbiamo bisogno, possiamo mostrare la lista delle applicazioni usando il Visualizzazione elenco classe. Creiamo un semplice ArrayAdapter e scavalca il suo GetView metodo per rendere gli elementi della lista. Quindi associamo il Visualizzazione elenco con l'adattatore.

lista ListView privata; private void loadListView () list = (ListView) findViewById (R.id.apps_list); ArrayAdapter adattatore = nuovo ArrayAdapter(questo, R.layout.list_item, app) @ Override public Visualizza getView (int position, Visualizza convertView, ViewGroup parent) if (convertView == null) convertView = getLayoutInflater (). gonfia (R.layout.list_item, nullo);  ImageView appIcon = (ImageView) convertView.findViewById (R.id.item_app_icon); appIcon.setImageDrawable (apps.get (posizione) .icon); TextView appLabel = (TextView) convertView.findViewById (R.id.item_app_label); appLabel.setText (apps.get (posizione) .label); TextView appName = (TextView) convertView.findViewById (R.id.item_app_name); appName.setText (apps.get (posizione) .name); return convertView; ; list.setAdapter (adattatore); 

8. Ascolto dei clic

Quando l'utente fa clic su un elemento nel Visualizzazione elenco, l'applicazione corrispondente dovrebbe essere lanciata dal nostro launcher. Noi usiamo il getLaunchIntentForPackage metodo del PackageManager classe per creare un Intento con cui iniziamo l'applicazione. Dai un'occhiata al seguente frammento di codice.

private void addClickListener () list.setOnItemClickListener (new AdapterView.OnItemClickListener () @Override public void onItemClick (AdapterView av, Visualizza v, int pos, long id) Intent i = manager.getLaunchIntentForPackage (apps.get (pos) .name.toString ()); AppsListActivity.this.startActivity (i); ); 

9. Mettendo tutto insieme

Per far funzionare tutto insieme, dobbiamo invocare loadApps, loadListView, e addClickListener nel onCreate metodo del AppsListActivity classe come mostrato di seguito.

protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); loadApps (); loadListView (); addClickListener (); 

Costruisci ed esegui la tua applicazione ancora una volta per vedere il risultato. Ora dovresti essere in grado di vedere le applicazioni che possono essere lanciate quando fai clic sul pulsante nella schermata principale del nostro programma di avvio. Fare clic su un oggetto per avviare l'applicazione corrispondente.

Conclusione

Ora hai il tuo launcher personalizzato. È molto semplice, ma puoi aggiungere tutte le personalizzazioni che desideri. Se vuoi approfondire i programmi di avvio personalizzati, ti invito a dare un'occhiata alle applicazioni di esempio sul portale per sviluppatori Android.