În forma sa cea mai de bază, un lansator este o aplicație care face următoarele:
Cu alte cuvinte, aplicația apare atunci când apăsați butonul de pornire. Cu excepția cazului în care ați instalat deja un lansator personalizat, utilizați în prezent lansatorul implicit livrat împreună cu instalarea dvs. Android. O mulțime de producători de dispozitive au propriile lansatoare personalizate, personalizate, care sunt conforme cu aspectul lor propriu, de exemplu, Samsung TouchWiz și HTC Sense.
În acest tutorial, vom crea un lansator simplu cu o interfață de bază a utilizatorului. Acesta va avea două ecrane:
Apropo, dacă lucrați foarte mult cu Android, vă recomandăm să verificați unul dintre cele 1000 de modele de aplicații Android de pe Envato Market. Există o mare varietate, deci sunteți sigur că veți găsi ceva acolo pentru a vă ajuta în munca dumneavoastră. Sau puteți externaliza zone care nu sunt specialitatea dvs. prin angajarea unui dezvoltator de aplicații sau a unui designer pe Envato Studio.
Șabloane de aplicații Android pe Envato MarketTrebuie să aveți instalat și configurat următoarele pe mașina dvs. de dezvoltare:
Puteți descărca instrumentul SDK și platforma portalul pentru dezvoltatori Android.
Lansați Eclipse și creați un nou proiect de aplicații Android. Denumesc cererea SimpleLauncher, dar poți să-i numești orice vrei. Asigurați-vă că utilizați un pachet unic. Versiunea SDK cea mai scăzută acceptă lansatorul nostru Froyo și SDK-ul țintă este Jeleuri.
Deoarece nu vrem să creăm un Activitate
, deselecta Creați activitate. Clic finalizarea a continua.
Următorul pas este modificarea AndroidManifest.xml fișier prin adăugarea a două activități. Primul Activitate
afișează ecranul de pornire. Să spunem asta HomeActivity
așa cum se arată mai jos.
Prin adăugarea categoriilor android.intent.category.HOME
și android.intent.category.DEFAULT
la intenție-filtru
grup, asociat Activitate
se comportă ca un lansator și apare ca opțiune când apăsați butonul de pornire al dispozitivului.
De asemenea, trebuie să setăm launchMode
la singleTask
pentru a vă asigura că doar o singură instanță a acesteia Activitate
este deținută de sistem în orice moment. Pentru a afișa imaginea de fundal a utilizatorului, setați tema la Theme.Wallpaper.NoTitleBar.FullScreen
.
Al doilea Activitate
trebuie să adăugăm afișează aplicațiile care sunt instalate pe dispozitivul utilizatorului. De asemenea, este responsabil pentru lansarea aplicațiilor. Nu avem nevoie de o configurație specială pentru acest lucru Activitate
. Numeste AppsListActivity
.
Creați un fișier XML pentru HomeActivity
clasa în proiect res / aspect și denumiți-o activity_home.xml. Aspectul are un singur Buton
care răspunde la evenimentele de clic. Dacă faceți clic pe buton, utilizatorul va intra în lista de aplicații din ecranul de start.
Apoi, creați un fișier XML pentru AppsListActivity
clasa în proiect res / aspect și denumiți-o activity_apps_list.xml. Aspectul conține a ListView
care ocupă întreg ecranul.
În cele din urmă, creați un al treilea fișier XML în aceeași locație și denumiți-l list_item.xml. Acest fișier definește aspectul unui element din ListView
. Fiecare element de vizualizare a listei reprezintă o aplicație instalată pe dispozitivul utilizatorului. Acesta afișează pictograma aplicației, eticheta și numele pachetului. Afișăm pictograma aplicației folosind un ImageView
exemplu și TextView
instanțe pentru etichetă și numele pachetului.
HomeActivity
Cu aspectul aplicației create, este timpul să creați cele două Activitate
clase. Când creați cele două clase, asigurați-vă că numele fiecărei clase se potrivește cu cel specificat mai devreme în fișierul manifest al proiectului.
Creați o nouă clasă numităHomeActivity
și stabilit android.app.Activity
ca superclaj.
pachet ah.hathi.simplelauncher; importă android.app.Activity; import șiroid.content.Intent; import android.os.Bundle; import șiroid.view.View; clasa publica HomeActivity extinde Activitatea @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_home); public void showApps (Vezi v) Intent i = intenție nouă (aceasta, AppsListActivity.class); startActivity (i);
În clasa lui onCreate
metoda, ne invocăm setContentView
, trecând în aspectul pe care l-am creat mai devreme. Ați putea să vă amintiți că am adăugat un buton la activity_home aspect care declanșează o metodă numită showApps
. Acum trebuie să implementăm această metodă în HomeActivity
clasă. Implementarea este destul de simplă, creăm un scop
pentru AppsListActivity
clasă și să o pornească.
AppsListActivity
Creați un altul Activitate
clasa numita AppsListActivity
și stabilit android.app.Activity
ca superclaj. În clasa lui onCreate
metoda, ne invocăm setContentView
, trecerea în activity_apps_list aspect pe care l-am creat mai devreme.
pachet ah.hathi.simplelauncher; importă android.app.Activity; import șiroid.content.Intent; import android.os.Bundle; import șiroid.view.View; clasa publică AppsListActivity se extinde Activitatea @Override protejată void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list);
Chiar dacă lansatorul nostru nu a fost terminat încă, puteți salva și rula aplicația dvs. în acest moment. Când apăsați butonul de acasă al dispozitivului, ar trebui să vedeți un pop-up care vă întreabă ce lansator doriți să utilizați.
Dacă alegeți Casa de lansare simplă, ar trebui să vedeți noul ecran de pornire cu un singur buton în colțul din dreapta sus al ecranului. De asemenea, ar trebui să vedeți imaginea de fundal curentă a dispozitivului dvs..
Reveniți la Eclipse și creați o clasă numită AppDetail
care va conține detaliile unei aplicații, numele pachetului, eticheta și pictograma aplicației. Interfața este destul de fundamentală, după cum puteți vedea mai jos.
pachet ah.hathi.simplelauncher; import șiroid.graphics.drawable.Drawable; clasa publica AppDetail CharSequence label; Numele de nume de caractere; Pictogramă trasabilă;
În loadApps
metodă a AppsListActivity
clasa, folosim queryIntentActivities
metodă a PackageManager
clasa pentru a prelua toate intenţii care au o categorie de Intent.CATEGORY_LAUNCHER
. Interogarea returnează o listă a aplicațiilor care pot fi lansate de un lansator. Vom trage prin rezultatele interogării și adăugăm fiecare articol într-o listă numită aplicaţii
. Uitați-vă la următorul fragment de cod pentru clarificare.
manager de pachete private manager; Lista privatăaplicaţii; void private voidApps () manager = getPackageManager (); apps = noul ArrayList (); Intent i = intenție nouă (Intent.ACTION_MAIN, null); i.addCategory (Intent.CATEGORY_LAUNCHER); Listă availableActivities = manager.queryIntentActivities (i, 0); pentru (ResolveInfo ri: availableActivities) AppDetail app = nou AppDetail (); app.label = ri.loadLabel (manager); app.name = ri.activityInfo.packageName; app.icon = ri.activityInfo.loadIcon (manager); apps.add (app);
Cu aplicaţii
variabilă care conține toate detaliile de care avem nevoie, putem afișa lista de aplicații utilizând ListView
clasă. Noi creăm un simplu ArrayAdapter
și suprascrie-i getView
metodă pentru a reda elementele listei. Apoi asociem ListView
cu adaptorul.
lista privată ListView; void privat loadListView () list = (ListView) findViewById (R.id.apps_list); ArrayAdapteradaptor = nou ArrayAdapter (aceasta, R.layout.list_item, apps) @Override public Vizualizare getView (int, View convertView, ViewGroup părinte) if (convertView == null) convertView = getLayoutInflater () inflate (R.layout.list_item, nul); ImageView appIcon = (ImagineView) convertView.findViewById (R.id.item_app_icon); appIcon.setImageDrawable (apps.get (poziție) .icon); TextView appLabel = (TextView) convertView.findViewById (R.id.item_app_label); appLabel.setText (apps.get (poziție) .label); TextView appName = (TextView) convertView.findViewById (R.id.item_app_name); appName.setText (apps.get (poziție) .name); retur convertView; ; list.setAdapter (adaptor);
Când utilizatorul face clic pe un element din ListView
, aplicația corespunzătoare ar trebui lansată de lansatorul nostru. Noi folosim getLaunchIntentForPackage
metodă a PackageManager
clasa pentru a crea un scop
cu care pornim aplicația. Uitați-vă la următorul fragment de cod.
private void addClickListener () list.setOnItemClickListener (noul AdapterView.OnItemClickListener () @Override public void onItemClick (AdapterView> av, View v, int pos, ID lung) Intent i = manager.getLaunchIntentForPackage (apps.get (pos) .name.toString ()); AppsListActivity.this.startActivity (i); );
Pentru ca totul să funcționeze împreună, trebuie să invocăm loadApps
, loadListView
, și addClickListener
în onCreate
metodă a AppsListActivity
clasa, după cum se arată mai jos.
protejat void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); loadApps (); loadListView (); addClickListener ();
Construiți și rulați încă o dată aplicația pentru a vedea rezultatul. Acum ar trebui să vedeți aplicațiile care pot fi lansate când faceți clic pe butonul din ecranul de start al lansatorului nostru. Faceți clic pe un element pentru a lansa aplicația corespunzătoare.
Acum aveți lansatorul dvs. personalizat. Este foarte simplu, dar puteți adăuga toate personalizările pe care le doriți. Dacă doriți să vă grăbiți mai adânc în lansatoarele personalizate, vă încurajez să examinați exemplele de aplicații din Android Developer Portal.