IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

[Rio] Comment utiliser les Android adaptives icons? [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 786
    Points : 5 742
    Points
    5 742
    Par défaut [Rio] Comment utiliser les Android adaptives icons?
    Bonjour à tous les Delphistes,

    Est-ce que quelqu'un a déjà essayé de gérer des Android "adaptives icons" avec Delphi?

    J'ai suivi plusieurs tuto (pas spécifiques à Delphi) qui expliquent à quel point c'est facile... Tellement facile que mes adaptives icons ressemblent étrangement à des "Delphi flames" Je n'ai jamais réussi à afficher des icônes autres que celles définissables dans Projet > Option...

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    dans projet/options tu n'auras qu'un support de base, pour ce que tu veux faire tu vas devoir personnaliser le fichier Manifest android
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 786
    Points : 5 742
    Points
    5 742
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    dans projet/options tu n'auras qu'un support de base, pour ce que tu veux faire tu vas devoir personnaliser le fichier Manifest android
    Peut-être oui... Peut-être non!

    Il y a des tuto qui affirment l'un ou l'autre; Pour certains pas besoin de toucher le manifest (il suffit d'ajouter des fichiers précis dans le déploiement du projet) pour d'autre il faut aussi modifier le manifest.

    Comme je n'ai pas réussi à faire fonctionner ces adaptives icons, je ne pourrais pas dire qui a raison...

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Si ce n'est toi, il y a une discussion sur le sujet dans le forum fmx de DelphiPraxis.

    Effectivement les réponses données si elles s'accordent sur le déploiement ne s'accordent pas toutes sur le manifest. Je crois que Dalija Prasnikar est la plus proche de la réponse en indiquant que par précaution, à cause des divers Os d'une même version, il vaut mieux aussi modifié le manifest.

    - Il y a une entrée dans le système qualité https://quality.embarcadero.com/browse/RSP-21335

    en résumé de la discussion originale

    Citation Envoyé par Dalija Prasnikar
    procédure : remplissez toutes les icônes que vous pouvez via les icônes d'application d'options de projet, puis ajoutez uniquement des icônes supplémentaires qui ne peuvent pas être définies via Delphi.
    soit :

    1. Vous ajoutez vos propres icônes de tailles appropriées

    2. vous ajoutez les icônes supplémentaires dans Projet > déploiement

    3. La modification du fichier manifest.xml n'est probablement même pas nécessaire. AFAIK, la seule différence entre le manifeste Android Studio et le manifeste Delphi réside dans la déclaration android:RoundIcon et, pour autant que je sache, l'icône ronde n'est pas obligatoire. Cependant, vous pouvez également ajouter celui-ci au cas où. Le problème avec Android est qu'il existe une pléthore d'appareils avec des systèmes d'exploitation personnalisés et certains peuvent nécessiter une icône ronde pour une meilleure UX.
    Toujours dans le même fil du post sur DelphiPraxis, vbb donne la démarche complète
    Citation Envoyé par vbb
    1) Ajoutez vos icônes au format .png dans les options du projet normalement. Ceci est nécessaire pour conserver la compatibilité avec Android 7.1 et les plus anciens.
    2) Vous devez créer 3 fichiers 'ic_launcher.xml', 'ic_launcher_background.xml' et 'ic_launcher_foreground.xml' 
    Toutefois je me dois de signaler que cet icone n'est pas un PNG mais un SVG (plus exactement la partie pathdata).C'est peut-être là, la cause de
    mes adaptives icons ressemblent étrangement à des "Delphi flames"
    Qui dit SVG dit composant Tpath, mais, n'étant toujours qu'un petit pis aller, faire un tour du côté de SVGIconImageList (disponible sur getit) ne sera pas une mauvaise idée surtout qu'il y a pas mal de SVG tout prêt



    Je laisse le soin de googler un peu pour retrouver le post original
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 786
    Points : 5 742
    Points
    5 742
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Si ce n'est toi, il y a une discussion sur le sujet dans le forum fmx de DelphiPraxis.

    Je vois que l'on a les mêmes lectures :-)

    Je suis tombé sur cette discussion juste après avoir publié ma question sur dev.com et je continue à la suivre parce qu'elle est toujours en cours.

    J'ai essayé la méthode proposée par vbb qui me semblait la plus explicative.

    Cela fonctionne bien mais j'ai maintenant un problème pour réussir à afficher mes propres icônes.



    Pour ceux que cela intéresse, j'expose ce que j'ai pu vérifier:

    • Si on fait une app Android avec Delphi, on se retrouve avec 2 méthodes distinctes pour gérer les icônes qui vont cohabiter dans une même app.
    • La méthode standard via "Projet > option" où l'on indique le chemin des fichiers .png pour les différentes dimensions (au max 144), Cette approche est indispensable pour les OS jusqu'à Android 7, s'applique pour les OS Android 8 et suivant mais de manière limitée. Par exemple, l'icône de l'app peut subir des transformations non-désirées due à la customisation de l'OS Android effectué par le fabricant de l'appareil Android.
    • La méthode disponible à partir de Android 8 est nommée "Adaptive Icons" qui permet d'éviter que les icônes soient adaptées par l'OS Android de l'appareil.
    • Pour mettre en place la méthode "Adaptive Icons", il n'est pas nécessaire de modifier le manifest.xml, il suffit d'ajouter 3 fichiers dans le déploiement ic_laucher.xml, ic_laucher_foreground.xml et ic_launcher_background.xml
    • L'image devant servir d'icône est codée dans le fichier ic_launcher_background.xml sous "pathdata". Cela doit être une image vectorielle .svg (pas un .png ou "autre image pixelisée") de dimension 108x108




    Citation Envoyé par SergioMaster Voir le message
    Qui dit SVG dit composant Tpath, mais, n'étant toujours qu'un petit pis aller, faire un tour du côté de SVGIconImageList (disponible sur getit) ne sera pas une mauvaise idée surtout qu'il y a pas mal de SVG tout prêt
    J'en suis justement arrivé au niveau de ce problème: Moi, je ne cherche pas des SVG tout prêts. J'ai des icônes au format .png que je veux retrouver en "Adaptive Icon", il me faut donc les convertir en .SVG et les coder dans un "pathdata".

    J'ai d'abord utilisé un convertisseur "png > svg" en ligne, le résultat est catastrophique (des tâches noires). J'ai donc utilisé le logiciel Inkscape et il m'a fallu effectué 100 passes de conversion pour obtenir un fichier .svg ressemblant à l'image d'origine .png.

    Maintenant mon problème est de savoir comme paramétrer mon image .svg dans la méthode "Adaptive Icon". Sous Delphi-Praxis, vbb dit "ouvrir le fichier .svg avec un éditeur de texte et recopier ce qui a dans "d=" dans le fichier ic_launcher_foreground.xml sous "pathdata". Super mais moi, j'ai au moins 100 "d=" dans mon fichier .svg!!!

    Quand je lis le terme "pathdata" (path et data), il doit y avoir un moyen d'indiquer le chemin d'accès du fichier .svg et pas faire du copier-coller d'un bout de fichier .svg édité avec un notepad, non?

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 786
    Points : 5 742
    Points
    5 742
    Par défaut
    Pour que cela serve à d'autres, voilà comment passer d'une icône .png en une "Adaptive Icon" à la mode Android

    1° Il faut d'abord transformer le .png en un ficher .svg (donc passer d'une image matricielle à une image vectorielle). On peut utiliser le logiciel gratuit Inkscape ou un site de conversion en ligne. Si l'image est complexe, il faut oublier les sites en ligne! Avec Inkscape, il va être possible de multiplier les passes de conversion pour obtenir le résultat désiré.

    Attention, le svg doit être un document de 108x108 pixels (pas un de plus, pas un de moins ) et l'image de l'icône proprement dite doit être de dimension 72x72 pixels et centrée au milieu du document (exigence à la mode Google Android)

    2° Il faut ensuite convertir le fichier svg en un res-drawable, c'est à dire un fichier xml qui code le fichier .svg à l'aide d'un convertisseur en ligne ou de Android Studio (pourquoi ferait-on simple quand on peut utiliser un canon pour tuer une mouche?)

    3° Puis enfin, on extrait le code du fichier .xml pour en faire le fichier "ic_launcher_foreground.xml"


    Enfin... Miracle! On a notre Adaptive Icon!

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Moi, je ne cherche pas des SVG tout prêts. J'ai des icônes au format .png que je veux retrouver en "Adaptive Icon", il me faut donc les convertir en .SVG et les coder dans un "pathdata". J'ai d'abord utilisé un convertisseur "png > svg" en ligne, le résultat est catastrophique (des tâches noires). J'ai donc utilisé le logiciel Inkscape et il m'a fallu effectué 100 passes de conversion pour obtenir un fichier .svg ressemblant à l'image d'origine .png.
    J'ai lu quelques trucs sur les conversions png/svg il me semble me souvenir de quelque chose sur GitHub. J'ai noté ça dans un coin, il va falloir que je retrouve ces notes

    Super mais moi, j'ai au moins 100 "d=" dans mon fichier .svg!!!
    cela sent les dégradés de couleurs que la conversion ne prend pas en charge
    Quand je lis le terme "pathdata" (path et data), il doit y avoir un moyen d'indiquer le chemin d'accès du fichier .svg et pas faire du copier-coller d'un bout de fichier .svg édité avec un notepad, non?
    Si tu retournes sur la discussion, tu verras que vbb a été plus explicite
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [shell32.dll]comment utiliser les icones ?
    Par deeal dans le forum Visual C++
    Réponses: 8
    Dernier message: 04/12/2006, 10h56
  2. [COM] Comment utiliser les événements Word ?
    Par Laurent Dardenne dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 30/05/2004, 12h38
  3. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  4. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo