Nella sua forma più semplice, un launcher è un'applicazione che effettua le seguenti operazioni:
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:
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È necessario che il seguente sia installato e configurato sulla macchina di sviluppo:
Puoi scaricare l'SDK e gli strumenti della piattaforma nel portale per sviluppatori Android.
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.
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
.
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.
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;
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 privatoApps; 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);
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); ArrayAdapteradattatore = 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);
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); );
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.
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.