この質問は this oneと重複していると思われるかもしれません。しかし、それ以来、Android Studioが更新され、そこに指定されたソリューションが機能しなくなりました。
Android studioの画像アセットを使用してアプリのロゴを設定しようとしています。これは、アプリのロゴをドローアブルまたはミップマップに直接配置すると、次のような多くの問題が発生するためです:サイズが大きい場合、アプリのクラッシュが発生します.
画像アセットを使用してアプリのロゴを設定しようとすると、問題に直面しています。アプリのロゴの背景を透明に保つことができません。
Photoshopで作成したpngロゴがあり、これをアプリのロゴとして設定したいのですが、背景は必要ありませんが、Android studio画像アセットには背景を削除するオプションがありません。私はグーグルから次の解決策を試しました:
しかし、これらのどれも私にとってはうまくいきませんでした。
これらの作品のどれも...私を助けてください。任意の助けをいただければ幸いです。
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マスクセクション
- 不透明でなければなりません
8.0以降のランチャーアイコンには不透明な背景色が必要ですが、アプリから 丸いランチャーアイコン を省略できる場合、7.1以下の他のレガシーランチャーアイコンは透明な背景色に戻すことができます。
shape
をnone
に設定すると、背景色は透明になります。res/mipmap/ic_laucher_round
を削除します。application
要素から属性Android:roundIcon="@mipmap/ic_launcher_round"
を削除します。上の左側のペインで、次のXMLファイルはAndroid 8.0以降のアダプティブランチャーアイコンを定義します。
右側のペインに見られるように、これらは次の描画可能なXMLファイルを参照します。
Android 8.0以降では、Android 8.1(Nexus 5X)スクリーンショットに示すように、ランチャーアイコンの背景色を透明にすることができます。サンプルアプリ「NoAdaptive」には、フォルダーmipmap-anydpi-v26
内のアダプティブランチャーアイコン用のリソースがなく、他のアプリ「Adaptive」にはリソースがあります。
ランチャーアイコンの背景色は、Android 8.0以降では透明にすることができますが、ユーザーのランチャーアプリによって異なります。一部のランチャーアプリは、レガシーアイコンを不透明なアダプティブアイコンに変換します。
デフォルトのランチャーアプリは、パッケージ名com.google.Android.launcher
に応じて Google Now Launcher です。更新番号1のスクリーンショットのように、背景色は透明にすることができます。
デフォルトのランチャーアプリは、パッケージ名com.google.Android.apps.nexuslauncher
に応じて Pixel Launcher です。背景色は、以下のスクリーンショットのように、Recents画面で透明にすることができます。
これらの GMS アプリはクローズドソースです:
com.google.Android.launcher
Google Nowランチャーcom.google.Android.apps.nexuslauncher
ピクセルランチャー対照的に、 AOSPアプリ はオープンソースです。 Androidのほとんどのランチャーアプリは、次のランチャーアプリのソースコードに基づいています。
com.Android.launcher
com.Android.launcher2
com.Android.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_TREATMENT
は FeatureFlags.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_background
は colors.xml で定義されています
<color name="legacy_icon_background">#FFFFFF</color>
そのため、背景色は白になります。
Android 5.0では、透明なファイルを作成するまで、アイコンは常に不透明な背景になりました。
Icon Type
のLauncher Icons (Adaptive and Legacy)
をオンにします。Asset Type
でImage
を選択し、Path
フィールド(Foreground Layer
タブ)内で画像を選択します。ic_launcher-web.png
のサイズです)の下に作成またはダウンロードします。Background Layer
タブで、Asset Type
でImage
を選択し、ステップ4から透明な背景をロードします。Legacy
タブで、すべてのYes
に対してGenerate
を選択し、None
に対してShape
を選択します。Foreground Layer
およびBackground Layer
タブでは、トリムサイズを変更できます。Preview
ウィンドウの画像の背後に黒い背景が表示されますが、Next
、Finish
を押してアプリケーションをコンパイルすると、Android 5、Android 8.に透明な背景が表示されます。
ここ は透明な画像です:
私のために働いたこの方法を試してください:
まず、画像アセットからランチャーアイコン(Adaptive and Legacy)
を作成します。背景レイヤーのimage
を選択し、0%または1%にサイズ変更し、レガシータブでshape
をnone
に設定します。
プロジェクトウィンドウでフォルダーres/mipmap/ic_laucher_round
を削除し、AndroidManifest.xmlを開き、application
要素から属性Android:roundIcon="@mipmap/ic_launcher_round"
を削除します。
ic_launcher.xml
からmipmap-anydpi-v26
を削除します。
注:Nexus 5X(Android 8.1)などの一部のデバイスでは、白い背景が自動的に追加され、何もできません。
誤解しなかった場合、Photoshopファイルから512x512ピクセルのpngファイルがあり、そこから必要なすべてのフォルダー(mipmap-xxxhdpiからmipmap-mdpi)のロゴを作成する必要があります。
Android Studioを使用してアイコンを作成した後、これを使用することもできます。 Photoshopを使用してアイコンを作成することを好みます。
Photoshopを使用して512x512pxアイコンを作成した後、 このサイト を使用します。アイコンはAndroidだけでなく、iPhoneアプリなどにも使用できます。無料です。アイコンは正しくスケーリングされ、名前が付けられ、ZipファイルのAndroidフォルダーの下のミップマップフォルダー内に配置されます。ダウンロードしてコピーして貼り付けた後、ファイルを解凍するだけです。少なくとも50個のアイコンを作成しましたが、問題はありませんでした。