Dans sa forme la plus élémentaire, un lanceur est une application qui effectue les tâches suivantes:
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:
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 MarketLes éléments suivants doivent être installés et configurés sur votre ordinateur de développement:
Vous pouvez télécharger le SDK et les outils de la plateforme sur le portail des développeurs Android..
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.
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
.
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.
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;
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éeapplications; 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);
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); ArrayAdapteradaptateur = 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);
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); );
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.
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..