Bouw een aangepaste Launcher op Android

Wat je gaat creëren

Invoering

In de meest eenvoudige vorm is een opstartprogramma een toepassing die het volgende doet:

  • het vertegenwoordigt het startscherm van een apparaat
  • het geeft een overzicht van en start applicaties die op het apparaat zijn geïnstalleerd

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:

  • een startscherm met de achtergrond van het apparaat
  • een scherm met de pictogrammen en details van de applicaties die op het apparaat zijn geïnstalleerd

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 Market

1. Vereisten

U moet het volgende op uw ontwikkelingsmachine geïnstalleerd en geconfigureerd hebben:

  • Android SDK en platformhulpprogramma's
  • Eclipse IDE 3.7.2 of hoger met de ADT-plug-in
  • een emulator of Android-apparaat met Android 2.2 of hoger

U kunt de SDK en platformhulpprogramma's downloaden van de Android-ontwikkelaarportal.

2. Projectinstellingen

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.

3. Projectmanifest

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.

 

4. Activiteitslay-outs

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.

     

5. De activiteitenklassen implementeren

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; 

6. Toepassingen ophalen

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élijst apps; 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); 

7. De lijst met applicaties weergeven

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

8. Luisteren naar klikken

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

9. Alles samenvoegen

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.

Conclusie

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.