In de meest eenvoudige vorm is een opstartprogramma een toepassing die het volgende doet:
Met andere woorden, het is de applicatie die verschijnt wanneer u op de startknop drukt. Tenzij u al een aangepast opstartprogramma hebt geïnstalleerd, gebruikt u momenteel het standaard opstartprogramma dat bij uw Android-installatie wordt geleverd. Veel fabrikanten van apparaten hebben hun eigen standaard, aangepaste draagraketten die voldoen aan hun eigen uiterlijk en gevoel, bijvoorbeeld Samsung TouchWiz en HTC Sense.
In deze tutorial gaan we een eenvoudige launcher maken met een eenvoudige gebruikersinterface. Het zal twee schermen hebben:
Trouwens, als u veel met Android werkt, wilt u misschien een van de meer dan 1000 Android-app-sjablonen op Envato Market bekijken. Er is een enorme variëteit, dus u zult er zeker iets vinden om u te helpen met uw werk. Of u kunt gebieden uitbesteden die niet uw specialiteit zijn door een app-ontwikkelaar of ontwerper in te huren bij Envato Studio.
Android app-sjablonen op Envato MarketU moet het volgende op uw ontwikkelingsmachine geïnstalleerd en geconfigureerd hebben:
U kunt de SDK en platformhulpprogramma's downloaden van de Android-ontwikkelaarportal.
Start Eclipse en maak een nieuw Android-applicatieproject. Ik noem de applicatie SimpleLauncher, maar je kunt het alles noemen wat je wilt. Zorg ervoor dat u een uniek pakket gebruikt. De laagste SDK-versie die onze opstartprogramma ondersteunt is Froyo en de doel-SDK is Jelly Bean.
Omdat we geen willen maken Activiteit
, deselecteren Activiteit maken. Klik Af hebben doorgaan.
De volgende stap is het aanpassen van de AndroidManifest.xml bestand door twee activiteiten toe te voegen. De eerste Activiteit
toont het startscherm. Laten we het een naam geven HomeActivity
zoals hieronder getoond.
Door de categorieën toe te voegen android.intent.category.HOME
en android.intent.category.DEFAULT
naar de intent-filter
groep, de bijbehorende Activiteit
gedraagt zich als een draagraket en wordt weergegeven als een optie wanneer u op de startknop van het apparaat drukt.
We moeten ook de launchMode
naar singleTask
om ervoor te zorgen dat slechts één instantie hiervan Activiteit
wordt op elk moment door het systeem vastgehouden. Als u de achtergrond van de gebruiker wilt weergeven, stelt u het thema in op Theme.Wallpaper.NoTitleBar.FullScreen
.
De seconde Activiteit
we moeten de applicaties weergeven die op het apparaat van de gebruiker zijn geïnstalleerd. Het is ook verantwoordelijk voor het starten van applicaties. Hiervoor hebben we geen speciale configuratie nodig Activiteit
. Noem maar op AppsListActivity
.
Maak een XML-bestand voor de HomeActivity
klasse in de projecten res / layout map en noem deze activity_home.xml. De lay-out heeft een single Knop
die reageert op klikgebeurtenissen. Als u op de knop klikt, wordt de gebruiker van het startscherm naar de lijst met toepassingen gebracht.
Maak vervolgens een XML-bestand voor de AppsListActivity
klasse in de projecten res / layout map en noem deze activity_apps_list.xml. De lay-out bevat een Lijstweergave
die het volledige scherm beslaat.
Maak ten slotte een derde XML-bestand op dezelfde locatie en geef het een naam list_item.xml. Dit bestand definieert de lay-out van een item in de Lijstweergave
. Elk item in de lijstweergave vertegenwoordigt een toepassing die op het apparaat van de gebruiker is geïnstalleerd. Het toont het pictogram, het label en de pakketnaam van de toepassing. We geven het pictogram van de toepassing weer met een Figuurweergave
instantie en Tekstweergave
exemplaren voor de label- en pakketnaam.
HomeActivity
Met de lay-outs van de applicatie gemaakt, is het tijd om de twee te maken Activiteit
klassen. Zorg er bij het maken van de twee klassen voor dat de naam van elke klasse overeenkomt met de naam die u eerder in het manifestbestand van het project hebt opgegeven.
Maak een nieuwe klasse met de naamHomeActivity
En instellen android.app.Activity
als zijn superklasse.
pakket ah.hathi.simplelauncher; import android.app.Activity; importeer android.content.Intent; import android.os.Bundle; import android.view.View; public class HomeActivity breidt Activiteit uit @Override beschermde ongeldig onCreate (Bundel savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_home); public void showApps (View v) Intent i = new Intent (this, AppsListActivity.class); startActivity (i);
In de klas onCreate
methode, roepen we aan setContentView
, doorgeven in de lay-out die we eerder hebben gemaakt. Wellicht herinnert u zich nog dat we een knop hebben toegevoegd aan de activity_home lay-out die een methode met de naam triggert showApps
. We moeten die methode nu implementeren in de HomeActivity
klasse. De implementatie is vrij eenvoudig, we maken een voornemen
voor de AppsListActivity
klasse en start het.
AppsListActivity
Maak een ander Activiteit
klasse genoemd AppsListActivity
En instellen android.app.Activity
als zijn superklasse. In de klas onCreate
methode, roepen we aan setContentView
, passeren in de activity_apps_list lay-out die we eerder hebben gemaakt.
pakket ah.hathi.simplelauncher; import android.app.Activity; importeer android.content.Intent; import android.os.Bundle; import android.view.View; public class AppsListActivity breidt activiteit uit @Override beschermde ongeldig onCreate (bundel savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list);
Hoewel ons opstartprogramma nog niet is voltooid, kunt u uw toepassing op dit moment opslaan en uitvoeren. Wanneer u op de startknop van het apparaat drukt, ziet u een pop-up waarin u wordt gevraagd welk opstartprogramma u wilt gebruiken.
Als jij kiest Simple Launcher Home, je zou je nieuwe startscherm moeten zien met een enkele knop in de rechterbovenhoek van het scherm. Je zou ook de huidige achtergrond van je apparaat moeten zien.
Ga terug naar Eclipse en maak een klasse met de naam AppDetail
die de details van een toepassing, de pakketnaam, het label en het toepassingspictogram bevat. De interface is vrij eenvoudig, zoals je hieronder kunt zien.
pakket ah.hathi.simplelauncher; importeer android.graphics.drawable.Drawable; public class AppDetail CharSequence-label; CharSequence-naam; Drawable-pictogram;
In de loadApps
methode van de AppsListActivity
klasse, we gebruiken de queryIntentActivities
methode van de Pakket manager
klasse om alle te halen intents die een categorie hebben van Intent.CATEGORY_LAUNCHER
. De query retourneert een lijst met de toepassingen die kunnen worden gestart door een opstartprogramma. We doorlopen de resultaten van de query en voegen elk item toe aan een lijst met de naam apps
. Bekijk het volgende codefragment ter verduidelijking.
privé PackageManager-manager; privélijstapps; private void loadApps () manager = getPackageManager (); apps = nieuwe ArrayList (); Intentie i = nieuwe intentie (Intent.ACTION_MAIN, null); i.addCategory (Intent.CATEGORY_LAUNCHER); Lijst 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);
Met de apps
variabele die alle details bevat die we nodig hebben, we kunnen de lijst met applicaties tonen met behulp van de Lijstweergave
klasse. We maken een eenvoudig ArrayAdapter
en negeer het getView
methode om de items van de lijst weer te geven. Vervolgens associëren we de Lijstweergave
met de adapter.
privé ListView-lijst; private void loadListView () list = (ListView) findViewById (R.id.apps_list); ArrayAdapteradapter = nieuwe ArrayAdapter (dit, R.layout.list_item, apps) @Override openbaar View getView (int position, View convertView, ViewGroup parent) if (convertView == null) convertView = getLayoutInflater (). inflate (R.layout.list_item, nul); ImageView appIcon = (ImageView) convertView.findViewById (R.id.item_app_icon); appIcon.setImageDrawable (apps.get (positie) .icon); TextView appLabel = (TextView) convertView.findViewById (R.id.item_app_label); appLabel.setText (apps.get (positie) .label genaamd); TextView appName = (TextView) convertView.findViewById (R.id.item_app_name); appName.setText (apps.get (positie) .name); return convertView; ; list.setAdapter (adapter);
Wanneer de gebruiker op een item in de Lijstweergave
, de bijbehorende applicatie moet worden gestart door onze launcher. Wij gebruiken de getLaunchIntentForPackage
methode van de Pakket manager
klasse om een te maken voornemen
waarmee we de applicatie starten. Bekijk het volgende codefragment.
private void addClickListener () list.setOnItemClickListener (new AdapterView.OnItemClickListener () @Override public void onItemClick (AdapterView> av, View v, int pos, long id) Intent i = manager.getLaunchIntentForPackage (apps.get (pos) .name.toString ()); AppsListActivity.this.startActivity (i); );
Om alles samen te laten werken, moeten we een beroep doen loadApps
, loadListView
, en addClickListener
in de onCreate
methode van de AppsListActivity
klasse zoals hieronder getoond.
protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); loadApps (); loadListView (); addClickListener ();
Bouw en voer uw applicatie opnieuw uit om het resultaat te zien. U zou nu in staat moeten zijn om de applicaties te zien die kunnen worden gestart wanneer u op de knop op het startscherm van onze launcher klikt. Klik op een item om de bijbehorende applicatie te starten.
Je hebt nu je eigen aangepaste launcher. Het is heel eenvoudig, maar je kunt alle gewenste aanpassingen toevoegen. Als u dieper in aangepaste draagraketten wilt graven, moedig ik u aan om de voorbeeldtoepassingen op de Android Developer Portal te bekijken.