Création d'écran Live sur Android

Android a un certain nombre de fonctionnalités de personnalisation pour aider les utilisateurs de personnaliser de nombreux aspects de leur expérience utilisateur de l'appareil. L'une de ces caractéristiques est fond d'écran en direct. Fonds d'écran animés ne restent pas sous forme d'images d'arrière-plan statique, mais ont des fonctions interactives. Apprenez à créer un fond d'écran en direct dans ce tutoriel!






Un fond d'écran en direct, sur Android, est normalement utilisé comme arrière-plan sur l'écran d'accueil qui anime ou des changements au fil du temps d'une certaine façon. Si vous avez un appareil Android, vous avez probablement vu quelques-uns des fonds d'écran animés intégrés, comme celui où les feuilles semblent tomber dans l'eau ondulant.

En tant que développeur, vous pouvez créer et publier fonds d'écran animés. Le processus est pas particulièrement difficile. Faire un fond d'écran en direct qui est fascinant et désirable sans vidange de la batterie de l'appareil de l'utilisateur est, cependant, quelque chose d'un défi. Dans ce tutoriel, nous allons vous guider à travers le processus de création d'un fond d'écran en direct qui se comporte. )

Étape 0: Mise en route

Récemment, nous vous avons montré comment utiliser renderScript. Le résultat final de ce tutoriel était simple effet des chutes de neige. Tournons cet effet dans un fond d'écran en direct.

Le code open source pour ce tutoriel est disponible en téléchargement. Nous vous recommandons d'utiliser à suivre. Les listes de code dans ce tutoriel ne comprennent pas le contenu de chaque fichier et ne couvrent pas la configuration du projet ou code couvert dans les didacticiels précédents.

Étape 1: Service ou moteur?

On pourrait dire que un fond d'écran en direct est juste un service. Après tout, pour créer un fond d'écran en direct, vous étendez simplement de la classe WallpaperService et mettre en œuvre une seule méthode, souvent avec une seule ligne de code, puis ajoutez votre définition de service au fichier manifeste.

Voyons voir à quoi cela ressemble. Voici le WallpaperService:

Et maintenant, la réalité des fonds d'écran en direct est révélé: Lors de l'implémentation du WallpaperService.Engine, tout ce que vous faites est à une surface de dessin fourni (via un SurfaceHolder). Il est presque aussi simple que cela. Avant de passer à la mise en œuvre de la WallpaperService.Engine, regardons quelques-uns des autres aspects de la configuration.

Étape 2: Définir le fond d'écran

Depuis un fond d'écran en direct est un service, vous devez vous inscrire au service dans votre fichier manifeste. pourrait ressembler à quelque chose comme l'enregistrement de service ceci:

Il y a deux ou trois choses à dire ici. Tout d'abord, l'utilisation de ce service nécessite l'autorisation de BIND_WALLPAPER (à savoir une autre application utilisant ce fond d'écran nécessiterait l'autorisation de BIND_WALLPAPER comme entrée-autorisation des utilisations dans leur manifeste). En second lieu, le filtre intention est une chaîne similaire à la classe de base. Enfin, les points méta-données dans un fichier XML. Ce fichier XML, défini par le développeur, fournit une configuration de fond d'écran supplémentaire. Voici notre fichier XML pour les paramètres de papier peint en direct appelé fallingsnow_wp:







Ici, nous utilisons simplement l'icône du lanceur régulier comme vignette et pointer vers une chaîne qui apparaîtra comme la description dans la liste des fonds d'écran. Si votre fond d'écran en direct la configuration a besoin, tu pointez avec l'androïde: propriété settingsActivity.

Enfin, de retour dans votre fichier manifeste, ne pas oublier de mettre les utilisations-fonction pour android.software.live_wallpaper:

Étape 3: Fond d'écran d'entretien du moteur Câblage

Maintenant que l'ennuyeux, mais critique, le personnel est hors de la voie, nous allons revenir au vrai travail: création de la classe WallpaperService.Engine. Étant donné que nous avons déjà un fichier renderScript pour faire une animation, tout ce que nous devons faire est de relier le rendu à la nouvelle surface. La méthode onSurfaceCreated () du moteur est un excellent endroit pour créer l'objet RenderScriptGL nous aurons besoin:

Nous avons également mis la priorité de rendu faible - c'est un fond d'écran en direct et non un moteur jeu critique ou rendu l'interface utilisateur. Il ne devrait pas ralentir quoi que ce soit d'autre sur le système.

Nettoyez cela dans la méthode onSurfaceDestroyed ():

La méthode onSurfaceChanged () est un excellent endroit pour initialiser la classe renderScript. Ceci est le premier endroit où vous trouverez les détails de ce que vous rendrez à, tels que la largeur et la hauteur. C'est là aussi nous avons mis la surface pour la classe RenderScriptGL.

Il est une bonne idée d'arrêter le fond d'écran quand il est pas visible.

Et c'est tout. Les rouleaux de papier peint en direct. Ou anime. Ou est-ce tout ce que vous voulez qu'il fasse.

Voulez-vous répondre aux robinets? Remplacer la méthode onCommand () de la classe WallpaperService.Engine.

Vous voulez régler les positions lorsque l'utilisateur fait glisser entre les pages écran d'accueil? Remplacer la méthode onOffsetsChanged () de la classe WallpaperService.Engine.

Vous voulez savoir si l'utilisateur visualise l'aperçu avant de définir le fond d'écran? Appelez la méthode isPreview () de la classe WallpaperService.Engine et vérifier les résultats.

La mise en œuvre complète de notre classe WallpaperService.Engine se trouve dans FallSnowWallpaperService.java du projet open source.

Jetons un coup d'oeil à la Live Wallpaper:

Cela devrait sembler familier; c'est la même chose que nous avons vu dans l'activité renderScript.

Étape 4: Quelques notes sur la performance

Étape 5: La démo Voir

La vue de démonstration et l'activité (du didacticiel précédent) est toujours disponible lorsque l'application se lance. Au lieu de le retirer, pourquoi ne pas simplement ajouter un gestionnaire de sorte que lorsqu'un utilisateur clique dessus, les paramètres de papier peint en direct viendront afin que l'utilisateur peut sélectionner le fond d'écran en direct?

Pourquoi pas, en effet! C'était facile. En tout état cliquable, il suffit d'ajouter l'androïde: propriété et vous êtes bon pour aller.

Voici une image fixe:

Création d'écran Live sur Android

Conclusion

Fonds d'écran animés sont un moyen pratique d'élargir votre application au-delà de ses limites typiques. Vous avez un jeu de rôle? Faites des fonds d'écran en direct mettant en vedette soignée des personnages principaux. Assurez-vous d'utiliser le bon sens lors du rendu à l'écran de telle sorte que leur appareil ne souffre pas d'expérience de l'utilisateur.

à propos des auteurs

Plus besoin d'aide pour écrire les applications Android? Découvrez nos derniers livres et ressources!







Articles Liés