Le contenu visible d'un thème est décrit par des objets placés dans des balises <view>. Chaque objet a un type (le nom de la balise), un name, et des propriétés. Cette page décrit les vues, les attributs communs à tous les objets, et renvoie vers la page de chaque objet.
<view>Les écrans de l'interface sont appelés des vues.
nameObligatoire. Il indique sur quel écran le contenu s'applique.
| Valeur | Écran |
|---|---|
system |
La liste des systèmes |
detailed |
La liste des jeux |
basic |
La liste des jeux, variante sans métadonnées |
menu |
Les menus, la barre d'aide et le clavier virtuel |
gameclip |
L'écran de veille « clips de jeux » |
Une même balise peut viser plusieurs vues, séparées par des virgules :
<view name="system, detailed">
...
</view>
Les vues
gridetvideodes anciennes versions n'existent plus. Une vue inconnue est ignorée en silence — c'est la cause la plus fréquente d'un thème qui « ne fait rien ».
ifFacultatif. Voir la page des conditions.
nameObligatoire. Il désigne l'élément visé. S'il correspond à un élément déjà géré par l'interface, l'objet le personnalise ; sinon, il faut ajouter extra="true". La liste des noms reconnus est donnée dans la page de chaque objet.
Un name peut viser plusieurs éléments du même type, séparés par des virgules :
<text name="md_lbl_rating, md_lbl_genre, md_lbl_players" color="48474D" />
Les noms d'éléments sont sensibles à la casse.
md_lbl_ratingetMD_LBL_RATINGne désignent pas le même élément.
extraFacultatif. extra="true" crée un nouvel élément au lieu d'en personnaliser un existant. Les éléments « extra » sont dessinés dans leur ordre de déclaration, avec un zIndex par défaut de 10 : déclarez donc les fonds en premier. Choisissez des noms qui ne risquent pas d'entrer en collision avec ceux de l'interface, par exemple en les préfixant.
Vous pouvez aussi regrouper vos ajouts dans un bloc <extras>, qui applique extra="true" à tout ce qu'il contient :
<view name="system">
<extras>
<image name="fond" path="./art/fond.png" pos="0 0" size="1 1" />
<box name="bandeau" pos="0 0.8" size="1 0.2" color="00000080" />
</extras>
</view>
showIfFacultatif, vue detailed. Restreint l'objet à un type d'entrée : game, folder, header, ou une combinaison séparée par des virgules.
regionFacultatif et déprécié. Il ne retient l'objet que si la région choisie par l'utilisateur (
eu,jp,us) est dans la liste. Préférez désormais les suffixes de propriété (path.EU,text.JP) ou la variable${settings.region}.
| Type | Écriture |
|---|---|
| Couple normalisé | Deux nombres séparés par une espace. Chaque nombre s'écrit en fraction (0.5), en pourcentage (50%) ou en pixels (960px). |
| Chemin | Relatif au fichier XML courant s'il commence par ., relatif au dossier personnel s'il commence par ~, absolu sinon. |
| Booléen | true / 1 / yes ou false / 0 / no. Seul le premier caractère est examiné. |
| Couleur | Hexadécimal RRVVBB ou RRVVBBAA. Sans canal alpha, l'opacité vaut FF. |
| Flottant | Un nombre décimal. |
| Chaîne | Du texte libre. |
Ces propriétés se retrouvent sur la plupart des objets. Elles ne sont détaillées qu'ici ; les pages d'objets se contentent d'indiquer lesquelles s'appliquent.
| Propriété | Type | Rôle |
|---|---|---|
pos |
Couple | Position du point d'ancrage de l'objet. 0 0 = coin haut gauche de l'écran, 1 1 = coin bas droit. Les valeurs hors de [0..1] placent l'objet partiellement ou totalement hors écran. |
size |
Couple | Taille de l'objet. |
maxSize |
Couple | Taille maximale, en conservant le rapport d'aspect. Utile quand on ne connaît pas les dimensions de l'image. |
keepratio |
Booléen | Conserve le rapport d'aspect avec size. |
origin |
Couple | Point de l'objet auquel pos se rapporte. 0.5 0.5 centre l'objet sur sa position. |
rotation |
Flottant | Angle de rotation en degrés, horaire si positif. |
rotationOrigin |
Couple | Point autour duquel la rotation s'effectue. Par défaut 0.5 0.5. |
color |
Couleur | Couleur principale. Sur une image, chaque pixel est multiplié par cette couleur : un FFFFFFAA ne change que la transparence. |
zIndex |
Flottant | Ordre de dessin, du plus petit au plus grand. Peut être négatif. |
disabled |
Booléen | Masque complètement l'objet. |
fontPath |
Chemin | Police TrueType ou OpenType à utiliser. |
fontSize |
Flottant | Taille de police en fraction de la hauteur d'écran (0.045 = 4,5 % de la hauteur). |
alignment |
Chaîne | left, center ou right. center centre aussi verticalement. |
forceUppercase |
Booléen | Affiche le texte en majuscules. |
lineSpacing |
Flottant | Interligne, en multiple de la hauteur de police. Par défaut 1.5. |
path |
Chemin | Fichier à charger (image, vidéo, son, texte, selon l'objet). |
Les zIndex par défaut sont : 0 pour le fond, 10 pour les extras, 20 pour la liste de jeux, 30 pour les médias, 40 pour les métadonnées et le carrousel, 50 pour le logo et les informations système.
| Objet | Rôle |
|---|---|
<image> |
Afficher une image |
<box> |
Dessiner un rectangle plein ou en dégradé |
<video> |
Afficher une vidéo |
<text> |
Afficher du texte |
<scrolltext> |
Afficher du texte défilant |
<markdown> |
Afficher du texte formaté en Markdown |
<rating> |
Afficher la note d'un jeu en étoiles |
<datetime> |
Afficher une date ou une heure |
| Objet | Rôle |
|---|---|
<carousel> |
Le carrousel de systèmes, ou sa variante en liste textuelle |
<textlist> |
La liste des jeux |
<helpsystem> |
La barre d'aide en bas d'écran |
<sound> |
La musique de fond |
| Objet | Rôle |
|---|---|
<menuBackground> |
Le fond des menus |
<menuText> |
Les textes des menus |
<menuTextSmall> |
Les textes secondaires des menus |
<menuSection> |
Les en-têtes de sections de menu |
<menuSize> |
La hauteur des lignes de menu |
<menuButton> |
Les boutons des menus |
<menuSwitch> |
Les interrupteurs des menus |
<menuSlider> |
Les curseurs des menus |
<menuIcons> |
Les icônes des menus |
<keyboard> |
Les couleurs du clavier virtuel |
| Objet | Rôle |
|---|---|
<include> |
Inclure un autre fichier de thème |
<subset> |
Déclarer une option de thème visible dans les menus |
Les balises
<container>et<ninepatch>sont encore reconnues par le parseur pour compatibilité, mais aucun élément de l'interface 10.1 ne les utilise et elles ne peuvent pas être créées enextra="true". Ne construisez rien dessus.