Creați un lansator personalizat pe Android

Ce veți crea

Introducere

În forma sa cea mai de bază, un lansator este o aplicație care face următoarele:

  • reprezintă ecranul de pornire al unui dispozitiv
  • el afișează și lansează aplicații instalate pe dispozitiv

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:

  • un ecran de pornire care afișează imaginea de fundal a dispozitivului
  • un ecran care prezintă pictogramele și detaliile aplicațiilor instalate pe dispozitiv

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 Market

1. Cerințe

Trebuie să aveți instalat și configurat următoarele pe mașina dvs. de dezvoltare:

  • Android SDK și instrumente de platformă
  • Eclipse IDE 3.7.2 sau o versiune ulterioară cu pluginul ADT
  • un emulator sau un dispozitiv Android care rulează Android 2.2 sau o versiune ulterioară

Puteți descărca instrumentul SDK și platforma portalul pentru dezvoltatori Android.

2. Configurarea proiectului

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.

3. Manifestul proiectului

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.

 

4. Aspecte de activitate

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.

     

5. Implementarea clasei de activități

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ă; 

6. Preluarea aplicațiilor

Î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); 

7. Afișarea listei de aplicații

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); ArrayAdapter adaptor = 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); 

8. Ascultarea pentru clicuri

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); ); 

9. Punerea în comun a tuturor

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.

Concluzie

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.

Cod