web-dev-qa-db-fra.com

Android Icône de lancement d’images Studio Image Couleur de fond transparente

Vous pensez peut-être que cette question est une copie de this one. Mais depuis lors, Android Studio a été mis à jour et la solution proposée ne fonctionne plus.

J'essaie de définir le logo de mon application à l'aide d'un élément d'image dans Android studio. En effet, si je mets mon logo directement dans drawable ou mipmap, cela pose de nombreux problèmes, tels que: Si sa taille est En cas de blocage important de l'application, si le périphérique fonctionne sur oreo, le logo n'apparaîtra pas et le paramètre par défaut ic_launcher s'affiche, etc.

Tout en essayant de définir le logo de mon application à l'aide d'une image, je suis confronté à un problème: je ne peux pas garder l'arrière-plan du logo de l'application transparent.

J'ai un logo png créé dans photoshop et je souhaite le définir comme logo de mon application. Je ne souhaite pas d'arrière-plan, mais Android). Les ressources d'image de studio ne fournissent aucune option permettant de supprimer l'arrière-plan. J'ai essayé les solutions suivantes de google:

this et this

mais rien de tout cela n'a fonctionné pour moi.

Solutions essayées:

  1. En mettant la forme à aucun
  2. en supprimant le fichier ic_launcher_background de son emplacement par défaut
  3. Essayé dans différents appareils

Aucune de ces œuvres ... aidez-moi s'il vous plaît. Toute aide serait appréciée.

18
Jaydip Kalkani

Android 8.0 Oreo (API niveau 26) introduit icônes de lanceur adaptatif , composé de deux couches: un avant-plan et un arrière-plan. Les directives de conception des matériaux indiquent que le calque d'arrière-plan doit être opaque dans Android O et au-delà, comme vous pouvez le voir en bas. de la citation suivante. Ainsi, l’icône du lanceur adaptatif pour Android 8.0 ou version supérieure doit avoir une couleur de fond opaque au moins, si targetSdkVersion de votre application est égale ou supérieure à 26.

https://material.io/guidelines/style/icons.html#icons-icons-for-Android

Icônes pour Android

Android O et au-delà

Les icônes Android O représentent votre application sur les écrans d'accueil et toutes les applications d'un appareil. Les instructions suivantes décrivent comment les icônes peuvent recevoir des traitements, animations et comportements visuels uniques.

...

Spécifications de la couche

Les icônes sont constituées de deux couches: un premier plan et un arrière-plan. Chaque couche peut animer et recevoir des traitements indépendamment de l'autre couche.

Premier plan (parallaxe défilante)

  • 108 x 108 dp
  • Section masquée de 72dp
  • Transparence recommandée (facultatif)

Fond (parallaxe subtile)

  • 108 X 108 dp
  • Section masquée de 72dp
  • Doit être opaque

Solution de contournement pour 7.1 ou inférieur

Bien que les icônes de lanceur de version 8.0 ou supérieure doivent avoir une couleur de fond opaque, les autres icônes de lanceur héritées de 7.1 ou moins peuvent revenir à la couleur d'arrière-plan transparente, si vous pouvez omettre icônes de lancement rond de votre application.

  1. Tout d’abord, créez des icônes de lancement (adaptatives et héritées) . Il créera des icônes de lanceur adaptatives et des icônes de lanceur héritées. Au départ, ils ont tous une couleur de fond opaque.
  2. Après cela, créez des icônes de lancement (Legacy uniquement) . Cela écrasera uniquement les icônes de lanceur existantes, comme vous pouvez le voir dans la deuxième capture d'écran ci-dessous. Si vous définissez shape sur none, leur couleur d'arrière-plan sera transparente.
  3. Supprimer le dossier res/mipmap/ic_laucher_round dans la fenêtre du projet.
  4. Ouvrez AndroidManifest.xml et supprimez l'attribut Android:roundIcon="@mipmap/ic_launcher_round" de l'élément application.

STEP 1

Dans le volet de gauche ci-dessus, les fichiers XML suivants définissent des icônes de lanceur adaptatif pour Android 8.0 ou supérieur.

  • mipmap-anydpi-v26/ic_launcher.xml
  • mipmap-anydpi-v26/ic_launcher_round.xml

Comme on le voit dans le volet de droite, ils font référence aux fichiers XML dessinables suivants.

  • drawable/ic_launcher_background.xml
  • drawable-v24/ic_launcher_foreground.xml

STEP 2


Mise à jour n ° 1:

Dans Android 8.0 ou supérieur, la couleur d'arrière-plan des icônes du lanceur peut être transparente, comme indiqué dans les captures d'écran Android 8.1 (Nexus 5X). L'application exemple " NoAdaptive "ne contient aucune ressource pour les icônes du programme de lancement adaptatif du dossier mipmap-anydpi-v26, et l'autre application "Adaptive" a la ressource.

Home screen in Android 8.1 (Nexus 5X)Recents screen in Android 8.1 (Nexus 5X)


Mise à jour # 2:

Bien que la couleur d’arrière-plan de l’icône du lanceur puisse être transparente dans Android 8.0 ou supérieur, cela dépend de l’application de lancement de l’utilisateur. Certaines applications de lanceur convertissent l’icône héritée en icône adaptative opaque.

Dans l'appareil Nexus 5X (Android 8.1)

L'application de lancement par défaut est Google Now Launcher , d'après son nom de package com.google.Android.launcher. La couleur de fond peut être transparente, comme dans les captures d'écran de la mise à jour 1.

Dans l'émulateur Nexus 5 (Android 8.1)

L'application de lancement par défaut est Pixel Launcher , en fonction du nom de son package com.google.Android.apps.nexuslauncher. La couleur de fond peut être transparente dans Récents écran, comme dans les captures d'écran ci-dessous:

  • opaque dans Home screen
  • transparent dans Recents screen
  • opaque dans Toutes les applications screen

Home, AllApps and Recents screens in Nexus 5 emulator

Fond blanc opaque dans certaines applications de lancement

Ces applications GMS sont des sources fermées:

  • com.google.Android.launcher _ Google Now Launcher
  • com.google.Android.apps.nexuslauncher Pixel Launcher

En revanche, applications AOSP sont open-source. La plupart des applications de lanceur dans Android sont basées sur le code source des applications de lanceur suivantes:

  • com.Android.launcher
  • com.Android.launcher2
    • Launcher2 (nom du paquet d'origine)
  • com.Android.launcher3
    • Launcher (pour Android 5.0 Lollipop ou supérieur)

Code source de Launcher3

Dans la branche git version d'origine de Launcher3, LauncherIcons.Java a la méthode wrapToAdaptiveIconDrawable qui enveloppe l'icône de lanceur héritée dans l'icône du lanceur adaptatif.

/**
 * If the platform is running O but the app is not providing AdaptiveIconDrawable, then
 * shrink the legacy icon and set it as foreground. Use color drawable as background to
 * create AdaptiveIconDrawable.
 */
static Drawable wrapToAdaptiveIconDrawable(Context context, Drawable drawable, float scale) {
    if (!(FeatureFlags.LEGACY_ICON_TREATMENT && Utilities.isAtLeastO())) {
        return drawable;
    }
    try {
        if (!(drawable instanceof AdaptiveIconDrawable)) {
            AdaptiveIconDrawable iconWrapper = (AdaptiveIconDrawable)
                    context.getDrawable(R.drawable.adaptive_icon_drawable_wrapper).mutate();
            FixedScaleDrawable fsd = ((FixedScaleDrawable) iconWrapper.getForeground());
            fsd.setDrawable(drawable);
            fsd.setScale(scale);
            return (Drawable) iconWrapper;
        }
    } catch (Exception e) {
        return drawable;
    }
    return drawable;
}

Le drapeau FeatureFlags.LEGACY_ICON_TREATMENT est défini dans FeatureFlags.Java :

// When enabled, icons not supporting {@link AdaptiveIconDrawable} will be wrapped in this class.
public static final boolean LEGACY_ICON_TREATMENT = true;

Ainsi, la couleur de fond de l'icône de lanceur héritée dépend de cet indicateur et peut être opaque dans certaines applications de lanceur, telles que Pixel Launcher.

La couleur de fond

Si l'indicateur est défini sur true, une nouvelle icône de lanceur adaptatif est créée avec R.drawable.adaptive_icon_drawable_wrapper et l’icône existante devient son calque de premier plan. Le calque d'arrière-plan est un dessinable: @color/legacy_icon_background, selon le fichier XML de la ressource :

<adaptive-icon xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <background Android:drawable="@color/legacy_icon_background"/>
    <foreground>
        <com.Android.launcher3.graphics.FixedScaleDrawable />
    </foreground>
</adaptive-icon>

La couleur legacy_icon_background est défini dans colors.xml

<color name="legacy_icon_background">#FFFFFF</color>

Ainsi, la couleur de fond devient blanche.

41
qtmfld

Dans Android 5.0, une icône avait toujours un arrière-plan opaque jusqu'à ce que je crée un fichier transparent.

  1. Fichier> Nouveau> Image Asset.
  2. Tournez à Launcher Icons (Adaptive and Legacy) dans Icon Type.
  3. Choisissez Image dans Asset Type Et sélectionnez votre image dans le champ Path (onglet Foreground Layer).
  4. Créez ou téléchargez ci-dessous un fichier PNG avec un fond transparent de 512x512 px (il s’agit d’une taille de ic_launcher-web.png).
  5. Dans l'onglet Background Layer, Sélectionnez Image dans Asset Type Et chargez l'arrière-plan transparent à l'étape 4.
  6. Dans l'onglet Legacy, sélectionnez Yes pour tout Generate, None pour Shape.
  7. Dans les onglets Foreground Layer Et Background Layer, Vous pouvez modifier la taille du rognage.

Bien que vous voyiez un arrière-plan noir derrière l'image dans la fenêtre Preview, après avoir appuyé sur Next, Finish et compilé une application, vous verrez apparaître un arrière-plan transparent dans Android 5, Android 8.

Ici est l'image transparente:

enter image description here

8
CoolMind

Essayez de cette façon qui a fonctionné pour moi:

  1. Tout d’abord, créez une icône de lanceur (Adaptive and Legacy) depuis Image Asset: sélectionnez un image pour le calque d'arrière-plan et redimensionnez-le à 0% ou 1%, puis définissez le jeu d'onglets hérité shape à none.

  2. Supprimer le dossier res/mipmap/ic_laucher_round dans la fenêtre du projet et ouvrez AndroidManifest.xml et supprimez l’attribut Android:roundIcon="@mipmap/ic_launcher_round" de l'élément application.

  3. Effacer ic_launcher.xml de mipmap-anydpi-v26.

Remarque: certains appareils, tels que Nexus 5X (Android 8.1), ajoutent automatiquement un fond blanc et ne peuvent rien faire.

1
Alireza K

Si je ne vous ai pas mal compris, vous avez un fichier png contenant 512x512 px à partir d'un fichier Photoshop et vous souhaitez en faire un logo pour tous les dossiers nécessaires (mipmap-xxxhdpi à mipmap-mdpi).

Vous pouvez également l'utiliser après avoir créé une icône à l'aide de Android Studio également. Je préfère créer mes icônes à l'aide de Photoshop.

J'utilise ce site après avoir créé une icône de 512x512px avec Photoshop. Vous pouvez avoir des icônes non seulement pour Android ainsi que pour les applications iPhone et bien plus encore. Gratuitement. Les icônes sont correctement dimensionnées, nommées et placées dans des dossiers mipmap sous Android = dossier du fichier Zip. Vous venez de décompresser le fichier après le téléchargement, le copier/coller.J'ai créé 50 icônes au moins et je n'ai jamais eu de problème.

0
Thracian