Outils utilisateur

Outils de site


manuel:avancé:personnalisation:écrans

Écran personnalisé


La méthode de création d'écrans personnalisés nécessite au moins une connaissance essentielle du développement du système de fichiers Android et XML. Sinon, nous vous recommandons d'utiliser des skins déjà créés. Pour les modifier, utilisez simplement un simple bloc-notes ou tout logiciel d'édition de texte avec surbrillance de syntaxe XML (par exemple Notepad ++)

Pour la plupart des gens qui veulent créer leurs propres écrans, il devrait suffire d'utiliser un outil beaucoup plus simple. tableau de bord système qui offre des fonctionnalités similaires d'une manière beaucoup moins pénible.

Toutefois, Tableau de bord est disponible uniquement avec Premium et manque certaines possibilités avancées comme la rotation des images, la mise en page entièrement gratuite, etc.

Méthode utilisant Eclipse

  1. Téléchargez et installez les outils Eclipse et Android SDK à partir de ici >>.
  2. Lorsque tout fonctionne, créez un nouveau projet Android. Cela créera une structure de données de base. Vous n'aurez rien à programmer.
  3. Le projet contient res / layout / main.xml file - c'est notre cible. Apprendre à travailler avec Eclipse GUI builder et modifiez ce fichier.
  4. Mettez des ressources (mieux vaut utiliser des images à 9 patchs) dans res dossiers (pris en charge - dessinable, dessinable-hdpi, dessinable-mdpi, dessinable-ldpi)
  5. Après compilation, prenez courrier.xml ressources de fichier et d'image à partir de la source compilée (ceci est dû aux images 9-patch. Si vous souhaitez utiliser des fichiers .png de base, vous pouvez les ajouter directement dans le résultat. 9-patch doit être pré-compilé !).

Utilisation de l'éditeur de texte de base

Vous n'êtes pas obligé de suivre les étapes précédentes. Vous pouvez éditer des fichiers XML directement dans n'importe quel éditeur. Les étapes précédentes ne sont que des moyens recommandés pour une création facile par "glisser-déposer" et également le seul moyen de prendre en charge les images à 9 patchs !

Comment le faire fonctionner

répertoire racine : ./Locus/data/customScreen/

Créez un fichier .ZIP contenant cette structure :

    /assets/ - pour les polices personnalisées /drawable/ - (9 patchs ou universel) /drawable-hdpi/ /drawable-ldpi/ /drawable-mdpi/ /layout/ - pour la spécification de mise en page (pour paysage et portrait ou... ci-dessous... pour séparer par orientation) /layout-land/ /layout-port/ /values/ (supported colors.xml, styles.xml)

Placez votre fichier de mise en page principal dans le répertoire de mise en page (ou deux fichiers, un dans layout-land, le second dans layout-port) et renommez-le en main.xml. C'est important parce que main.xml Le fichier est la porte d'accès à l'ensemble de la mise en page, il doit être inclus !

Vous pouvez également placer ces fichiers à la racine de votre fichier .ZIP (facultatif)

  • icon.png - petit logo (48x48px) de votre peau
  • info.html - HTML page qui contiendra une description de votre peau (quelques liens, bouton de don ou similaire est possible)

Enfin, placez ce fichier .zip dans le répertoire racine décrit ci-dessus !

Vues prises en charge

Conteneurs

Vues

  • Bouton Image étend ImageView
    • locus:actionClick - comme bouton
    • locus:actionVisibility - en tant que bouton
  • MapScreenView (vue de lieu personnalisée) étend la vue
    • aucun paramètre personnalisé
  • RotateView (vue de lieu personnalisée) étend la vue
    • locus:action - attache à quelle action de rotation… par exemple locus:action=“{orient_course}”
    • locus:rotateImage - une référence à drawable, réellement centrée et tournée autour du centre d'un angle défini par l'action
    • locus:rotatePivotX - déplace le point de rotation de la valeur X (+X vers le bas)
    • locus:rotatePivotY - déplace le point de rotation de la valeur Y (+Y vers le bas)
    • locus:rotateStartAngle - l'angle auquel la rotation commence avec la valeur rotateStartValue (- valeur pour l'orientation dans le sens inverse des aiguilles d'une montre)
    • locus:rotateStartValue - valeur de la variable qui commence à rotateStartAngle (en unités de base, donc mètres, seconde, ..)
    • locus:rotateEndAngle - l'angle auquel la rotation se termine avec la valeur rotateEndValue
    • locus:rotateEndValue - valeur pour la variable qui se termine à rotateEndValue
  • SlideView (vue Locus personnalisée) étend la vue
    • locus:action - attache à quelle action de diapositive … par exemple locus:action=“{orient_course}”
    • locus:slideImage - une référence à un élément dessinable utilisé pour la diapositive
    • locus:slideStartPosition - position du pixel de l'image qui correspond slideStartValue valeur.
    • locus:slideStartValue - valeur d'action pour slideStartPosition (en unités de base - mètres, secondes, ..)
    • locus:slideEndPosition - valeur de position du dernier pixel de l'image. Aussi (slideEndPosition - slideStartPosition) définir la largeur de l'image
    • locus:slideEndValue - valeur d'action pour slideEndPosition
    • locus:slideInfinite - si l'image de la diapositive est répétée pour couvrir toute la vue parent (true/false) [false]

Échantillon - imaginons cette image de la boussole :

Pour le faire fonctionner en pleine largeur d'écran, vous devez définir ces paramètres :

    android:layout_width="match_parent" android:layout_height="X" locus:action="{orient_course}" locus:slideImage="X" locus:slideStartPosition="0dip" locus:slideStartValue="180" locus:slideEndPosition="match_parent " locus:slideEndValue="-180" locus:slideInfinite="[true]"

Par cette définition, vous dites que :

  • 1. si l'angle d'orientation est de 180°, le premier pixel (slideStartPosition) sera réellement dessiné comme le premier pixel. Étant donné que la plage entière définie va de 0° à 360° et que la valeur finale a une position à l'extrémité (locus:slideEndPosition="match_parent"), l'image sera étirée sur tout l'écran. Le milieu de l'image (S), sera au milieu, comme on veut !
  • 2. si l'orientation est par exemple de 90°, Locus Map calcule d'abord la partie en pourcentage de l'image qui doit être déplacée. Il est calculé par (valeur actuelle - slideStartValue) / (slideEndValue - slideStartValue), donc dans ce cas c'est (90 - 180) / (-180 - 180) = 25%!. Cela signifie que l'image sera déplacée de 25 %

Attributs globaux

Toutes les vues peuvent être appliquées avec ces attributs :

Attributs personnalisés

lieu:actionClic

  • {track_record_start}
  • {track_record_stop}
  • {track_record_pause}
  • {map_zoom_in}
  • {map_zoom_out}
  • {map_center}

locus:actionVisibilité

  • {lat_gps} - Latitude GPS (latitude centrale de la carte si GPS désactivé)
  • {lon_gps} - Longitude GPS (longitude du centre de la carte si GPS désactivé)
  • {altitude} - Altitude GPS (0 si GPS désactivé)
  • {précision} - Précision GPS (0 si GPS désactivé)
  • {gps_sats_used} - satellites réellement utilisés pour la localisation GPS
  • {gps_sats_all} - tous les satellites visibles
  • {déclinaison} - déclinaison réelle
  • {orient_course} - orientation du parcours (la source dépend de la sélection sur l'écran du GPS - GPS ou boussole interne)
  • {orient_course_opposit} - orientation du parcours (la source dépend de la sélection sur l'écran du GPS - GPS ou boussole interne)
  • {orient_pitch} - orientation du pas
  • {orient_roll} - orientation du rouleau
  • {orient_gps_shift} - orientation calculée comme relèvement de la position GPS précédente à actuelle
  • {orient_gps_angle} - angle calculé comme {orient_gps_shift} - {orient_course}, donc c'est la vraie direction de déplacement.
  • {temps} - temps réel
  • {la rapidité} - Vitesse GPS (0 si GPS désactivé)
  • {rec_dist} - enregistrement de piste - distance enregistrée
  • {rec_dist_down} - enregistrement de piste - distance de descente
  • {rec_dist_up} - enregistrement de piste - distance en montée
  • {rec_alt_min} - enregistrement de piste - altitude minimale
  • {rec_alt_max} - enregistrement de piste - altitude maximale
  • {rec_alt_down} - enregistrement de piste - altitude de descente
  • {rec_alt_up} - enregistrement de piste - altitude en montée
  • {rec_alt_cumu} - enregistrement de piste - altitude cumulée
  • {rec_time} - enregistrement de piste - temps d'enregistrement total
  • {rec_time_move} - enregistrement de piste - temps uniquement lors du déplacement
  • {rec_speed_avg} - enregistrement de piste - vitesse moyenne
  • {rec_speed_avg_move} - enregistrement de piste - vitesse moyenne uniquement lors du déplacement
  • {rec_speed_max} - enregistrement de piste - vitesse maximale
  • {rec_points} - enregistrement de piste - nombre de points enregistrés
  • {rec_pace} - enregistrement de piste - nombre de points enregistrés
  • {map_center_lat} - latitude du centre de la carte
  • {map_center_lon} - longitude du centre de la carte
  • {map_rotate} - valeur de rotation de la carte
  • {guide_wpt_name} - guidez le nom du waypoint cible
  • {guide_wpt_lat} - guider la latitude du waypoint cible
  • {guide_wpt_lon} - guider la longitude du waypoint cible
  • {guide_wpt_alt} - guider l'altitude du waypoint cible
  • {guide_wpt_dist} - guider la distance cible au waypoint
  • {guide_wpt_dist_to_finish} - guider la distance cible jusqu'au dernier waypoint de la piste
  • {guide_wpt_azim} - guider l'azimut cible vers le waypoint
  • {guide_wpt_angle} - valeur de l'angle cible du guide (calculée comme {guide_wpt_azim} - {orient_course})
  • {guide_wpt_time} - guider le temps cible vers le waypoint
  • {guide_wpt_time_to_finish} - guider le temps cible jusqu'au dernier waypoint de la piste

lieu:textFont

  • lien vers la police stockée dans le répertoire MySkin/assets

lieu:textFormat

  • les paramètres doivent être {i}, {d}, {id}, {u} "partie entière, partie double, les deux, uniquement les unités"
  • par example - "locus:textFormat="{id} - {u}". Peut maintenant être appliqué à la vitesse, à la distance, à l'altitude et à la précision
manuel/avancé/personnalisation/screens.txt · Dernière modification : 2023/07/14 13:46 par mstupka