Construire un lanceur personnalisé sur Android

Ce que vous allez créer

introduction

Dans sa forme la plus élémentaire, un lanceur est une application qui effectue les tâches suivantes:

  • il représente l'écran d'accueil d'un appareil
  • il répertorie et lance les applications installées sur le périphérique

En d'autres termes, c'est l'application qui apparaît lorsque vous appuyez sur le bouton d'accueil. Sauf si vous avez déjà installé un lanceur personnalisé, vous utilisez actuellement le lanceur par défaut fourni avec votre installation Android. De nombreux fabricants d'appareils ont leurs propres lanceurs personnalisés par défaut, conformes à leur apparence, par exemple, Samsung TouchWiz et HTC Sense..

Dans ce tutoriel, nous allons créer un programme de lancement simple avec une interface utilisateur de base. Il aura deux écrans:

  • un écran d'accueil affichant le fond d'écran de l'appareil
  • un écran affichant les icônes et les détails des applications installées sur l'appareil

En passant, si vous travaillez beaucoup avec Android, vous pouvez consulter l'un des plus de 1 000 modèles d'applications Android disponibles sur Envato Market. Il existe une grande variété, alors vous êtes sûr de trouver quelque chose pour vous aider dans votre travail. Vous pouvez également externaliser des domaines qui ne sont pas votre spécialité en embauchant un développeur ou un concepteur d'application sur Envato Studio..

Modèles d'applications Android sur Envato Market

1. Conditions

Les éléments suivants doivent être installés et configurés sur votre ordinateur de développement:

  • SDK Android et outils de plate-forme
  • Eclipse IDE 3.7.2 ou supérieur avec le plugin ADT
  • un émulateur ou un appareil Android sous Android 2.2 ou supérieur

Vous pouvez télécharger le SDK et les outils de la plateforme sur le portail des développeurs Android..

2. Configuration du projet

Lancez Eclipse et créez un nouveau projet d'application Android. Je nomme l'application SimpleLauncher, mais vous pouvez le nommer comme vous voulez. Assurez-vous d'utiliser un package unique. La version de SDK la plus basse prise en charge par notre lanceur est Froyo et le SDK cible est Dragée.

Puisque nous ne voulons pas créer un Activité, désélectionner Créer une activité. Cliquez sur terminer continuer.

3. Manifeste du projet

La prochaine étape consiste à modifier le AndroidManifest.xml déposer en ajoutant deux activités. La première Activité affiche l'écran d'accueil. Nommons-le AccueilActivité comme indiqué ci-dessous.

      

En ajoutant les catégories android.intent.category.HOME et android.intent.category.DEFAULT au filtre d'intention groupe, les associés Activité se comporte comme un lanceur et apparaît comme une option lorsque vous appuyez sur le bouton d'accueil de l'appareil.

Nous devons également définir le mode de lancement à singleTask pour vous assurer qu'une seule instance de cette Activité est détenu par le système à tout moment. Pour afficher le fond d'écran de l'utilisateur, définissez le thème sur Thème.Wallpaper.NoTitleBar.FullScreen.

La deuxième Activité nous devons ajouter affiche les applications installées sur le périphérique de l'utilisateur. Il est également responsable du lancement des applications. Nous n'avons besoin d'aucune configuration spéciale pour cela Activité. Nomme le AppsListActivity.

 

4. Schémas d'activité

Créez un fichier XML pour le AccueilActivité classe dans le projet res / mise en page dossier et nommez-le activité_home.xml. La mise en page a un seul Bouton qui répond aux événements de clic. En cliquant sur le bouton, l'utilisateur à partir de l'écran d'accueil accède à la liste des applications.

 

Ensuite, créez un fichier XML pour le AppsListActivity classe dans le projet res / mise en page dossier et nommez-le activity_apps_list.xml. La mise en page contient un ListView qui occupe tout l'écran.

    

Enfin, créez un troisième fichier XML au même emplacement et nommez-le. list_item.xml. Ce fichier définit la mise en page d’un élément dans le ListView. Chaque élément de la vue liste représente une application installée sur le périphérique de l'utilisateur. Il affiche l'icône, le libellé et le nom du package de l'application. Nous affichons l'icône de l'application à l'aide d'un ImageView exemple et Affichage instances pour l'étiquette et le nom du paquet.

     

5. Implémentation des classes d'activité

AccueilActivité

Avec les présentations de l'application créées, il est temps de créer les deux Activité Des classes. Lors de la création des deux classes, assurez-vous que le nom de chaque classe correspond à celui que vous avez spécifié précédemment dans le fichier manifeste du projet..

Créer une nouvelle classe nomméeAccueilActivité Et mettre android.app.Activity comme sa super-classe.

package ah.hathi.simplelauncher; importer android.app.Activity; importer android.content.Intent; importer android.os.Bundle; importer android.view.View; Classe publique HomeActivity Etend Activité @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_home);  public void showApps (Afficher v) Intention i = nouvelle Intention (this, AppsListActivity.class); startActivity (i); 

Dans la classe onCreate méthode, nous invoquons setContentView, en passant dans la mise en page que nous avons créée plus tôt. Vous vous souvenez peut-être que nous avons ajouté un bouton à la activité_home mise en page qui déclenche une méthode nommée showApps. Nous devons maintenant mettre en œuvre cette méthode dans le AccueilActivité classe. La mise en œuvre est assez simple, nous créons un Intention pour le AppsListActivity classe et le démarrer.

AppsListActivity

Créer un autre Activité classe nommée AppsListActivity Et mettre android.app.Activity comme sa super-classe. Dans la classe onCreate méthode, nous invoquons setContentView, en passant dans le activity_apps_list mise en page que nous avons créée plus tôt.

package ah.hathi.simplelauncher; importer android.app.Activity; importer android.content.Intent; importer android.os.Bundle; importer android.view.View; Classe publique AppsListActivity étend l'activité @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); 

Même si notre programme de lancement n'est pas encore terminé, vous pouvez enregistrer et exécuter votre application à ce stade. Lorsque vous appuyez sur le bouton d'accueil de l'appareil, une fenêtre contextuelle vous demandant quel lanceur vous souhaitez utiliser.

Si tu choisis Simple Launcher Home, vous devriez voir votre nouvel écran d’accueil avec un seul bouton dans le coin supérieur droit de l’écran. Vous devriez également voir le fond d'écran actuel de votre appareil..

Retournez dans Eclipse et créez une classe nommée AppDetail qui contiendra les détails d'une application, son nom de package, son étiquette et l'icône de l'application. L'interface est assez basique comme vous pouvez le voir ci-dessous.

package ah.hathi.simplelauncher; importer android.graphics.drawable.Drawable; Classe publique AppDetail CharSequence label; Nom de séquence; Icône dessinable; 

6. Récupération des applications

dans le loadApps méthode du AppsListActivity classe, nous utilisons le queryIntentActivities méthode du Directeur chargé d'emballage classe pour aller chercher tous les Les intentions qui ont une catégorie de Intention.CATEGORY_LAUNCHER. La requête renvoie une liste des applications pouvant être lancées par un programme de lancement. Nous parcourons les résultats de la requête et ajoutons chaque élément à une liste nommée applications. Jetez un coup d'œil à l'extrait de code suivant pour plus de précisions..

gestionnaire de PackageManager privé; liste privée applications; private void loadApps () manager = getPackageManager (); apps = new ArrayList(); Intention i = nouvelle Intention (Intent.ACTION_MAIN, null); i.addCategory (Intent.CATEGORY_LAUNCHER); liste 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 (gestionnaire); apps.add (app); 

7. Affichage de la liste des applications

Avec le applications variable contenant tous les détails dont nous avons besoin, nous pouvons afficher la liste des applications à l'aide du ListView classe. Nous créons un simple ArrayAdapter et remplacer sa getView méthode pour rendre les éléments de la liste. Nous associons ensuite le ListView avec l'adaptateur.

liste privée ListView; private void loadListView () list = (ListView) findViewById (R.id.apps_list); ArrayAdapter adaptateur = new ArrayAdapter(this, R.layout.list_item, apps) @Override public Voir getView (position int, Afficher convertView, parent ViewGroup) 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 (position) .icon); TextView appLabel = (TextView) convertView.findViewById (R.id.item_app_label); appLabel.setText (apps.get (position) .label); TextView appName = (TextView) convertView.findViewById (R.id.item_app_name); appName.setText (apps.get (position) .name); renvoyer convertView; ; list.setAdapter (adaptateur); 

8. Écoute des clics

Lorsque l'utilisateur clique sur un élément de la ListView, l'application correspondante doit être lancée par notre lanceur. Nous utilisons le getLaunchIntentForPackage méthode du Directeur chargé d'emballage classe pour créer un Intention avec lequel nous commençons l'application. Regardez l'extrait de code suivant.

void privé addClickListener () list.setOnItemClickListener (nouvel AdapterView.OnItemClickListener () @Override public void onItemClick (AdapterView av, vue v, int pos, id long) intention i = gestionnaire.getLaunchIntentForPackage (apps.get (pos) .name.toString ()); AppsListActivity.this.startActivity (i); ); 

9. Rassembler le tout

Pour que tout fonctionne ensemble, nous devons invoquer loadApps, loadListView, et addClickListener dans le onCreate méthode du AppsListActivity classe comme ci-dessous.

void protégé onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); loadApps (); loadListView (); addClickListener (); 

Générez et exécutez votre application une fois de plus pour voir le résultat. Vous devriez maintenant pouvoir voir les applications qui peuvent être lancées lorsque vous cliquez sur le bouton de l'écran d'accueil de notre lanceur. Cliquez sur un élément pour lancer l'application correspondante.

Conclusion

Vous avez maintenant votre propre lanceur personnalisé. C'est très basique, mais vous pouvez ajouter toutes les personnalisations que vous voulez. Si vous souhaitez approfondir vos lanceurs personnalisés, je vous encourage à consulter les exemples d'applications disponibles sur le portail de développement Android..