web-dev-qa-db-ja.com

Android St​​udio Image Asset Launcherアイコンの透明な背景色

この質問は this oneと重複していると思われるかもしれません。しかし、それ以来、Android St​​udioが更新され、そこに指定されたソリューションが機能しなくなりました。

Android studioの画像アセットを使用してアプリのロゴを設定しようとしています。これは、アプリのロゴをドローアブルまたはミップマップに直接配置すると、次のような多くの問題が発生するためです:サイズが大きい場合、アプリのクラッシュが発生します.

画像アセットを使用してアプリのロゴを設定しようとすると、問題に直面しています。アプリのロゴの背景を透明に保つことができません。

Photoshopで作成したpngロゴがあり、これをアプリのロゴとして設定したいのですが、背景は必要ありませんが、Android studio画像アセットには背景を削除するオプションがありません。私はグーグルから次の解決策を試しました:

this および this

しかし、これらのどれも私にとってはうまくいきませんでした。

試したソリューション:

  1. 形状をなしに設定することにより
  2. ic_launcher_backgroundファイルをデフォルトの場所から削除する
  3. さまざまなデバイスで試した

これらの作品のどれも...私を助けてください。任意の助けをいただければ幸いです。

18
Jaydip Kalkani

Android 8.0 Oreo(APIレベル26)で導入された 適応型ランチャーアイコン は、前景と背景の2つのレイヤーで構成されています。 マテリアルデザインガイドライン背景レイヤーは、Android O以降で不透明でなければならないことを示します(下の図を参照)次の引用の。そのため、アプリの targetSdkVersion が26以上の場合、Android 8.0以降のアダプティブランチャーアイコンには少なくとも不透明な背景色が必要です。

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

Androidのアイコン

Android O以降

Android Oアイコンは、デバイスのホーム画面とすべてのアプリ画面でアプリを表します。次のガイドラインは、アイコンが独自の視覚的処理、アニメーション、および動作を受け取る方法を説明しています。

...

レイヤー仕様

アイコンは、前景と背景の2つのレイヤーで構成されます。各レイヤーは、他のレイヤーとは独立してアニメーション化して治療を受けることができます。

前景(スクロール視差)

  • 108 x 108 dp
  • 72dpマスクセクション
  • 透明性を推奨(オプション)

背景(微妙な視差)

  • 108 X 108 dp
  • 72dpマスクセクション
  • 不透明でなければなりません

7.1以前の回避策

8.0以降のランチャーアイコンには不透明な背景色が必要ですが、アプリから 丸いランチャーアイコン を省略できる場合、7.1以下の他のレガシーランチャーアイコンは透明な背景色に戻すことができます。

  1. まず、ランチャーアイコン(適応型およびレガシー)を作成します。アダプティブランチャーアイコンとレガシーランチャーアイコンを作成します。それらはすべて、最初は不透明な背景色です。
  2. その後、ランチャーアイコン(レガシーのみ)を作成します。下の2番目のスクリーンショットでわかるように、これにより既存のレガシーランチャーアイコンのみが上書きされます。 shapenoneに設定すると、背景色は透明になります。
  3. プロジェクトウィンドウでフォルダーres/mipmap/ic_laucher_roundを削除します。
  4. AndroidManifest.xmlを開き、application要素から属性Android:roundIcon="@mipmap/ic_launcher_round"を削除します。

STEP 1

上の左側のペインで、次のXMLファイルはAndroid 8.0以降のアダプティブランチャーアイコンを定義します。

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

右側のペインに見られるように、これらは次の描画可能なXMLファイルを参照します。

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

STEP 2


アップデート#1:

Android 8.0以降では、Android 8.1(Nexus 5X)スクリーンショットに示すように、ランチャーアイコンの背景色を透明にすることができます。サンプルアプリ「NoAdaptive」には、フォルダーmipmap-anydpi-v26内のアダプティブランチャーアイコン用のリソースがなく、他のアプリ「Adaptive」にはリソースがあります。

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


アップデート#2:

ランチャーアイコンの背景色は、Android 8.0以降では透明にすることができますが、ユーザーのランチャーアプリによって異なります。一部のランチャーアプリは、レガシーアイコンを不透明なアダプティブアイコンに変換します。

Nexus 5Xデバイス(Android 8.1)

デフォルトのランチャーアプリは、パッケージ名com.google.Android.launcherに応じて Google Now Launcher です。更新番号1のスクリーンショットのように、背景色は透明にすることができます。

Nexus 5エミュレーター(Android 8.1)

デフォルトのランチャーアプリは、パッケージ名com.google.Android.apps.nexuslauncherに応じて Pixel Launcher です。背景色は、以下のスクリーンショットのように、Recents画面で透明にすることができます。

  • ホーム画面で不透明
  • Recents画面で透明
  • All Apps画面で不透明

Home, AllApps and Recents screens in Nexus 5 emulator

一部のランチャーアプリで不透明な白い背景

これらの GMS アプリはクローズドソースです:

  • com.google.Android.launcherGoogle Nowランチャー
  • com.google.Android.apps.nexuslauncherピクセルランチャー

対照的に、 AOSPアプリ はオープンソースです。 Androidのほとんどのランチャーアプリは、次のランチャーアプリのソースコードに基づいています。

  • com.Android.launcher
  • com.Android.launcher2
    • Launcher2(元のパッケージ名)
  • com.Android.launcher3
    • Launcher(Android 5.0 Lollipop以上の場合)

Launcher3ソースコード

Gitブランチ oreo-release Launcher3の LauncherIcons.Java には、レガシーランチャーアイコンをアダプティブランチャーアイコンにラップするメソッドwrapToAdaptiveIconDrawableがあります。

/**
 * 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;
}

フラグFeatureFlags.LEGACY_ICON_TREATMENTFeatureFlags.Java で定義されています:

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

そのため、従来のランチャーアイコンの背景色はこのフラグに依存し、Pixel Launcherなどの一部のランチャーアプリでは不透明になる場合があります。

背景色

フラグがtrueに設定されている場合、R.drawable.adaptive_icon_drawable_wrapperで新しいアダプティブランチャーアイコンが作成され、既存のレガシーアイコンが前景レイヤーになります。背景レイヤーはドローアブルです: リソースXMLファイル に従って@color/legacy_icon_background

<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>

legacy_icon_backgroundcolors.xml で定義されています

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

そのため、背景色は白になります。

41
qtmfld

Android 5.0では、透明なファイルを作成するまで、アイコンは常に不透明な背景になりました。

  1. [ファイル]> [新規]> [画像アセット]。
  2. Icon TypeLauncher Icons (Adaptive and Legacy)をオンにします。
  3. Asset TypeImageを選択し、Pathフィールド(Foreground Layerタブ)内で画像を選択します。
  4. 512x512 pxサイズの透明な背景を持つPNGファイル(これはic_launcher-web.pngのサイズです)の下に作成またはダウンロードします。
  5. Background Layerタブで、Asset TypeImageを選択し、ステップ4から透明な背景をロードします。
  6. Legacyタブで、すべてのYesに対してGenerateを選択し、Noneに対してShapeを選択します。
  7. Foreground LayerおよびBackground Layerタブでは、トリムサイズを変更できます。

Previewウィンドウの画像の背後に黒い背景が表示されますが、NextFinishを押してアプリケーションをコンパイルすると、Android 5、Android 8.に透明な背景が表示されます。

ここ は透明な画像です:

enter image description here

8
CoolMind

私のために働いたこの方法を試してください:

  1. まず、画像アセットからランチャーアイコン(Adaptive and Legacy)を作成します。背景レイヤーのimageを選択し、0%または1%にサイズ変更し、レガシータブでshapenoneに設定します。

  2. プロジェクトウィンドウでフォルダーres/mipmap/ic_laucher_roundを削除し、AndroidManifest.xmlを開き、application要素から属性Android:roundIcon="@mipmap/ic_launcher_round"を削除します。

  3. ic_launcher.xmlからmipmap-anydpi-v26を削除します。

注:Nexus 5X(Android 8.1)などの一部のデバイスでは、白い背景が自動的に追加され、何もできません。

1
Alireza K

誤解しなかった場合、Photoshopファイルから512x512ピクセルのpngファイルがあり、そこから必要なすべてのフォルダー(mipmap-xxxhdpiからmipmap-mdpi)のロゴを作成する必要があります。

Android St​​udioを使用してアイコンを作成した後、これを使用することもできます。 Photoshopを使用してアイコンを作成することを好みます。

Photoshopを使用して512x512pxアイコンを作成した後、 このサイト を使用します。アイコンはAndroidだけでなく、iPhoneアプリなどにも使用できます。無料です。アイコンは正しくスケーリングされ、名前が付けられ、ZipファイルのAndroidフォルダーの下のミップマップフォルダー内に配置されます。ダウンロードしてコピーして貼り付けた後、ファイルを解凍するだけです。少なくとも50個のアイコンを作成しましたが、問題はありませんでした。

0
Thracian