Build A Custom Launcher på Android 
 
 81 
 Del 
 25 
 Del 
 Dette Cyber mandag Envato Tuts + Kursene vil bli redusert til bare $ 3. Ikke gå glipp av 
 Hva du skal lage 
 Innledning 
 
 I sin mest grunnleggende form, er en bærerakett et program som gjør følgende:. 
 
 står det startskjermen til en enhet 
 
 det lister og lanserer programmer som er installert på enheten 
 
 I andre ord, er det programmet som dukker opp når du trykker på hjem-knappen. Med mindre du allerede har installert en tilpasset bærerakett, er du for tiden bruker standard launcher som følger med Android installasjon. Mye av utstyrsprodusenter har egne standard, tilpassede bæreraketter som samsvarer med deres proprietære utseende, for eksempel Samsung TouchWiz og HTC Sense. 
 
 I denne opplæringen, vi kommer til å lage en enkel bærerakett med en grunnleggende brukergrensesnitt. Den vil ha to skjermer: 
 
 en startskjermen viser enhetens tapet 
 
 en skjerm som viser ikonene og detaljer av programmene som er installert på enheten 
 
 1. Krav 
 
 Du må ha følgende installert og konfigurert på utviklingsmaskinen: 
 
 Android SDK og plattformverktøy 
 
 Eclipse IDE 3.7 0,2 eller høyere med ADT plugin 
 
 en emulator eller Android-enhet som kjører Android 2.2 eller høyere 
 
 Du kan laste ned SDK og plattformverktøy Android utvikleren portal. 
 
 2. Prosjektet Setup 
 
 Launch Eclipse og opprette en ny Android-applikasjon prosjekt. Jeg navngi programmet  SimpleLauncher 
, men du kan kalle det hva du vil. Kontroller at du bruker en unik pakke. Den laveste SDK versjon vår launcher støtter er  Froyo Hotell og målet SDK er  Jelly Bean 
. 
 
 Siden vi ikke ønsker å skape en aktivitet, deaktiverer  Opprett Aktivitet 
. Klikk  Fullfør 
 å fortsette. 
 
 3. Prosjektet Manifest 
 
 Det neste trinnet er å endre  AndroidManifest.xml 
 fil ved å legge to aktiviteter. Den første aktiviteten viser startskjermen. La oss kalle det HomeActivity som vist nedenfor 
 < aktivitet android. Name = "ah.hathi.simplelauncher.HomeActivity" android: label = "Simple Launcher Home" android: tema = "@ android: style /tema .Wallpaper.NoTitleBar.Fullscreen "android: launchMode =" singleTask "android: stateNotNeeded =" true "> < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.HOME" /> < kategori android: name = "android.intent.category.DEFAULT" /> < /intent-filter > < /aktivitets > 
 Ved å legge kategoriene android.intent.category.HOME og android.intent.category.DEFAULT til intent-filter gruppe, oppfører den tilhørende aktivitet som en bærerakett og viser seg som et alternativ når du trykker enhetens Hjem-knappen. 
 
 Vi trenger også å sette launchMode å singleTask å sørge for at bare én forekomst av denne aktiviteten er holdt av systemet til enhver tid. For å vise brukerens tapet, sette temaet til Theme.Wallpaper.NoTitleBar.FullScreen. 
 
 Den andre Activity vi må legge viser programmene som er installert på brukerens enhet. Det er også ansvarlig for å starte programmer. Vi trenger ikke noen spesiell konfigurasjon for denne aktiviteten. Name it AppsListActivity 
 < aktivitet android. Name = "ah.hathi.simplelauncher.AppsListActivity" android: tema = "@ android: style /Theme.NoTitleBar.Fullscreen" > < /aktivitets > 
 4. Aktivitets utforminger 
 
 Lag en XML-fil for HomeActivity klassen i prosjektets  res /layout 
 mappe og gi den navnet  activity_home.xml 
. Oppsettet har en enkelt knapp som reagerer på klikk hendelser. Ved å klikke på knappen tar brukeren fra startskjermen til listen over programmer 
 < RelativeLayout xmlns:. Android = "http://schemas.android.com/apk/res/android~~number=plural" xmlns: verktøy = "http: . //schemas.android.com/tools "android: layout_width =" match_parent "android: layout_height =" match_parent "verktøy: context =" HomeActivity "> < Button android: id = "+ id /apps_button" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_alignParentRight = "true" android: layout_alignParentTop = "true" android: layout_marginRight = "10dp" android : layout_marginTop = "10dp" android: text = "Show Apps" Android: onclick = "showApps" /> < /RelativeLayout > 
 Deretter oppretter en XML-fil for AppsListActivity klassen i prosjektets  res /layout 
 mappe og gi den navnet  activity_apps_list.xml 
. Oppsettet inneholder en Listview som tar opp hele skjermen 
 < xml version = "1.0" encoding = "utf-8" > < LinearLayout xmlns:.? Android = "http://schemas.android. com /apk /res /android "android: layout_width =" match_parent "android: layout_height =" match_parent "android: orientering =" vertikal "> < Listview android: id = "+ id /apps_list" android: layout_width = "match_parent" android: layout_height = "match_parent" > < /Listview > < /LinearLayout > 
 Til slutt opprette en tredje XML-fil på samme sted og gi den navnet  list_item.xml 
. Denne filen definerer utformingen av et element i listevisningen. Hver listevisning element representerer et program installert på brukerens enhet. Det viser ikonet, navnet og pakkenavn for programmet. Vi viser programikonet ved hjelp av en Imageview forekomst og TextView instanser for etiketten og pakkenavn 
 < xml version = "1.0" encoding = "UTF-8" > < RelativeLayout xmlns:.? Android = "http : //schemas.android.com/apk/res/android "android: layout_width =" match_parent "android: layout_height =" match_parent "android: padding =" 10dp "> < Imageview android: id = "+ id /item_app_icon" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_alignParentLeft = "true" android: layout_centerVertical = "true" /> < TextView android: id = "+ id /item_app_label" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_toRightOf = "+ id /item_app_icon" android: paddingLeft = "10dp" /> < TextView android: id = "+ id /item_app_name" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_below = "+ id /item_app_label" android: layout_toRightOf = "+ id /item_app_icon" android: paddingLeft = "10dp" /> < /RelativeLayout > 
 5. Igangsettelse av aktiviteten Classes 
 
 HomeActivity 
 
 Med oppsett av programmet opprettet, er det på tide å lage de to Aktivitets klasser. Når du oppretter de to klassene, må navnet på hver klasse matcher den du anga i prosjektets manifest fil tidligere. 
 
 Opprett en ny klasse som heter  
 HomeActivity og satt android.app.Activity som sin super 
 pakken ah.hathi.simplelauncher;. import android.app.Activity, import android.content.Intent, import android.os.Bundle, import android.view.View; public class HomeActivity strekker Aktivitet {Override beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_home); } Public void showApps (Vis v) {Intent i = new Intent (dette, AppsListActivity.class); startActivity (i); }} 
 I klassens onCreate metode, påberope vi setContentView, passerer i oppsettet vi opprettet tidligere. Du husker kanskje at vi har lagt til en knapp på  activity_home 
 layout som utløser en metode som heter showApps. Vi trenger nå å implementere denne metoden i HomeActivity klassen. Gjennomføringen er ganske enkel, skaper vi en intensjonsavtale for AppsListActivity klassen og starte den. 
 
 AppsListActivity 
 
 Opprett en aktivitet klassen heter AppsListActivity og satt android.app.Activity som sin superklasse. I klassens onCreate metode, påberope vi setContentView, passerer i  activity_apps_list 
 layout vi opprettet tidligere 
 pakken ah.hathi.simplelauncher;. Import android.app.Activity, import android.content.Intent; import android.os.Bundle, import android.view.View; public class AppsListActivity strekker Aktivitet {Override beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); }} 
 Selv om vårt rakett ikke er ferdig ennå, kan du lagre og kjøre programmet på dette punktet. Når du trykker på enhetens startknappen, bør du se en pop-up spørre deg hvilken launcher du ønsker å bruke. 
 
 Hvis du velger  Simple Launcher Hjem 
, bør du se den nye startskjermen med en enkelt knapp i øvre høyre hjørne av skjermen. Du bør også se på enheten din nåværende bakgrunnsbilde. 
 
 
 
 Gå tilbake til Eclipse og lage en klasse som heter AppDetail som vil inneholde detaljer om en applikasjon, emballasjen navn, etikett, og programikon. Grensesnittet er ganske grunnleggende som du kan se nedenfor 
 pakken ah.hathi.simplelauncher;. Import android.graphics.drawable.Drawable; public class AppDetail {CharSequence label; CharSequence navn; Teikne icon;} 
 6. Henting Applications 
 
 I loadApps metoden i AppsListActivity klassen, bruker vi queryIntentActivities metoden i PackageManager klassen til å hente alle  Intents Hotell som har en kategori av Intent.CATEGORY_LAUNCHER. Spørringen returnerer en liste over programmer som kan startes av en bærerakett. Vi sløyfe gjennom resultatene av spørringen og legge hvert element på en liste som heter apps. Ta en titt på følgende kodebiten for avklaring 
 privat PackageManager manager;. Privat List < AppDetail > apps; private void loadApps () {sjef = getPackageManager (); apps = new Arraylist < AppDetail > (); Intent i = new Intent (Intent.ACTION_MAIN, null); i.addCategory (Intent.CATEGORY_LAUNCHER); List < ResolveInfo > 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. Vise listen over applikasjoner 
 
 Med apps variabel som inneholder alle de opplysningene vi trenger, kan vi vise listen over programmer som bruker Listview klassen. Vi skaper en enkel ArrayAdapter og overstyre sin getView metode for å gjengi listens elementer. Vi forbinder Listview med adapteren 
 private Listview-listen.; private void loadListView () {list = (Listview) findViewById (R.id.apps_list); ArrayAdapter < AppDetail > adapter = new ArrayAdapter < AppDetail >. (dette, R.layout.list_item, apps) {Override offentlig Vis getView (int posisjon, Utsikt convertView, ViewGroup forelder) {if (convertView == null) {convertView = getLayoutInflater () blåses (R.layout.list_item, null); } Imageview appIcon = (Imageview) convertView.findViewById (R.id.item_app_icon); appIcon.setImageDrawable (apps.get (stilling) .icon); TextView appLabel = (TextView) convertView.findViewById (R.id.item_app_label); appLabel.setText (apps.get (stilling) .label); TextView Appname = (TextView) convertView.findViewById (R.id.item_app_name); appName.setText (apps.get (stilling) .name); returnere convertView; }}; list.setAdapter (adapter); } 
 8. Lytte for klikk 
 
 Når brukeren klikker på et element i listevisningen, det tilsvarende programmet skal bli lansert av vår launcher. Vi bruker getLaunchIntentForPackage metoden i PackageManager klassen til å lage en intensjonsavtale som starter vi programmet. . Ta en titt på følgende kodebiten 
 private void addClickListener () {list.setOnItemClickListener (ny AdapterView.OnItemClickListener () {Override public void onItemClick (AdapterView <? ≫ av, Utsikt v, int pos, lang id ) {Intent i = manager.getLaunchIntentForPackage (apps.get (pos) .name.toString ()); AppsListActivity.this.startActivity (i);}});} 
 9. Putting It All Together 
 
 For å gjøre alt arbeide sammen, må vi påkalle loadApps, loadListView og addClickListener i onCreate metoden i AppsListActivity klassen som vist nedenfor. 
 Beskyttet void onCreate (Bundle savedInstanceState) {super .onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); loadApps (); loadListView (); addClickListener ();} 
 Bygg og kjøre programmet en gang til for å se resultatet. Du skal nå kunne se søknadene som kan startes når du klikker på knappen på startskjermen på vår launcher. Klikk på et element for å starte det tilsvarende programmet. 
 
 Konklusjon 
 
Du har nå din egen custom launcher. Det er veldig grunnleggende, men du kan legge til alle de tilpasningene du ønsker. Hvis du ønsker å grave dypere inn i tilpassede bæreraketter, oppfordrer jeg deg til å ta en titt på eksempelprogrammer på Android Developer Portal.

