10 votes

Comment rendre mes applications "personnalisables" ?

Existe-t-il un moyen standard de rendre mes applications personnalisables?

Par "personnalisables", je veux dire la capacité de l'application à prendre en charge plusieurs thèmes.

Je ne cible aucune plateforme en particulier ici. Je veux juste savoir s'il existe des directives générales pour rendre les applications personnalisables.

Il semble que personnaliser les applications web soit relativement facile. Et les applications de bureau?

8voto

Adam Davis Points 47683

Les skins ne sont qu'un Autre Niveau D'Abstraction (YALOA!).

Si vous vous renseignez sur le modèle MVC, vous comprendrez beaucoup des principes nécessaires.

La couche de présentation (ou skin) n'a qu'à faire quelques choses :

  • Afficher l'interface
  • Quand certaines actions sont effectuées (clic, saisie de texte dans une case, etc) alors cela déclenche des actions
  • Elle doit recevoir des notifications du modèle et du contrôleur lorsqu'il faut changer

Dans un programme normal, cette abstraction est faite en ayant du code qui connecte les zones de texte avec les méthodes et objets auxquels elles sont liées, et en ayant du code qui modifie l'affichage en fonction des commandes du programme.

Si vous souhaitez ajouter des skins, vous devez permettre que cela puisse être fait sans recompiler le code.

Jetez un coup d'œil, par exemple, à XUL et voyez comment cela se passe là. Vous verrez que de nombreux projets de skinning utilisent XML pour décrire les divers 'visages' de la skin (comme jouer de la musique, ou organiser la bibliothèque pour une skin de lecteur MP3), et ensuite où chaque contrôle est situé et à quelles données et méthodes il doit être attaché dans le programme.

Cela peut sembler difficile jusqu'à ce que vous le fassiez, puis vous réaliserez que c'est comme n'importe quel autre niveau d'abstraction avec lequel vous avez déjà travaillé (d'un programme avec des sauts inconditionnels, aux structures de contrôle, aux fonctions, aux structures, aux classes et objets, aux compilateurs JIT, etc).

La courbe d'apprentissage initiale n'est pas négligeable, mais faites quelques projets et vous verrez que ce n'est pas difficile.

-Adam

5voto

Chris Ballance Points 17329

Conservez tous vos styles dans un fichier CSS séparé

Évitez tout style en ligne

3voto

Outlaw Programmer Points 6610

Il dépend vraiment de la façon dont vous voulez que vos applications soient "habillées". Permettre à l'utilisateur de configurer les couleurs et les images sera beaucoup plus facile que de lui permettre de masquer/supprimer des composants ou même d'écrire ses propres composants.

Dans la plupart des cas, vous pouvez probablement vous en sortir en écrivant une sorte de fournisseur de ressources qui fournit des couleurs et des images au lieu de les coder en dur dans votre fichier source. Donc, ceci :

Color backgroundColor = Color.BLUE;

Deviendrait quelque chose comme :

Color backgroundColor = ResourceManager.getColor("form.background");

Ensuite, tout ce que vous avez à faire est de modifier les mappings dans votre classe ResourceManager et tous les clients seront cohérents. Si vous voulez faire cela en temps réel, le changement de l'un des mappings du ResourceManager enverra probablement un événement à ses clients et les informera qu'un changement a eu lieu. Ensuite, les clients peuvent redessiner leurs composants s'ils le souhaitent.

3voto

Dave Swersky Points 25958

L'implémentation varie en fonction de la plateforme, mais voici quelques considérations générales à prendre en compte pour une compatibilité multiplateforme :

  • Il est préférable d'avoir une mise en page globale établie dans laquelle les éléments visuels peuvent être "branchés". Il est plus difficile (mais toujours possible) de prendre en charge des mises en page générales complètement différentes via la personnalisation.
  • Élaborer une convention de nommage bien documentée pour les ressources (images, fragments HTML, etc.) qui constituent une peau (skin).
  • Concevoir un moyen propre de "découvrir" les peaux existantes et d'en ajouter de nouvelles. Par exemple : Winamp utilise un format de fichier ZIP pour stocker toutes les images de ses peaux. Tous les fichiers de peau résident dans un dossier bien connu situé hors du dossier d'application.
  • Être conscient des problèmes d'échelle. Tout le monde n'utilise pas la même résolution d'écran.
  • Allez-vous autoriser le développement de peaux par des tiers ? Cela influencera votre conception.
  • Sur le plan architectural, le motif Modèle-Vue-Contrôleur se prête à la personnalisation.

Il s'agit simplement de quelques points à prendre en compte. Votre implémentation différera entre un client Web et un client riche en fonction de vos besoins en fonctionnalités. En espérant que cela vous aide.

1voto

xan Points 5035

Le principe de base est celui utilisé par le CSS dans les pages web.

Au lieu de spécifier toujours le formatage (couleur / police / mise en page [dans une certaine mesure]) de votre contenu, vous décrivez simplement quel type de contenu il s'agit.

Prenons un exemple web, dans le contenu d'une page de blog, vous pourriez marquer différentes sections comme étant un :

  1. Titre
  2. Article de blog
  3. Volet d'archive

etc.

L'article peut être composé de plusieurs sous-sections telles que "titre", "corps" et "horodatage".

Ensuite, ailleurs, vous avez une feuille de style qui spécifie toutes les propriétés de chaque type d'élément, taille, alignement, couleur, arrière-plan, police, etc. Lors du rendu de la page ou du dessin / initialisation des composants dans votre interface utilisateur, vous consultez toujours la feuille de style actuelle pour consulter ces propriétés.

Ensuite, le thème, et en fait l'édition de votre design, devient BEAUCOUP plus facile. Vous créez simplement une feuille de style différente et ajustez les valeurs à votre convenance.

Éditer :

Un point clé à retenir est la distinction entre un style général (comme les classes en CSS) et un style spécifique (comme les ID en CSS). Vous voulez pouvoir identifier de manière unique certains éléments de votre mise en page, comme l'entête, en tant qu'élément unique que vous pouvez appliquer un style spécifique, tandis que d'autres éléments (comme un article dans un blog ou un champ dans une vue de base de données) voudront tous avoir le même style.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X