以下に必要な知識をご紹介します。
左側は、アダプティブ アイコンとして使用されている通常のアイコンです。右側は、アダプティブ アイコン システムで機能するように改変されている新たなアイコンです。
アイコンの種類
次の画像は、一つのアダプティブ アイコンが、ユーザーの選択したさまざまなアイコンの図形に合わせて変化する様子を示しています。
アダプティブ アイコンを作成する
1 個のビットマップ アイコンを使って、アダプティブ アイコンを作成することは簡単です。まず、108 x 108 の PNG を新たに作成します。その内部の 72 x 72 の領域に、デザインのうち必ず表示されなければならない部分が含まれるようにします。このファイルは、icon_bg.png という名前で保存してください。
アダプティブ アイコンの保管位置
アダプティブ アイコンが作成できたら、これを UE4 プロジェクトのフォルダの次の場所に入れます:Build/Android/res/drawable
こうすることによって、このプロジェクトが Android デバイスのためにビルドされると、この新たなアイコンが含まれることになります。
アダプティブ アイコンを登録する
次に、この新たなアダプティブ アイコンの画像を参照できる、アイコン リソースのための XML が必要となります。そのためにはまず、Build/Android/res に、drawable-anydpi-v26 という名前のフォルダを作成します。このフォルダの中に icon.xml という名前の新たな XML ファイルを作成し、さらに、そのファイルの中身として、以下を追加します。
<!--?xml version="1.0" encoding="utf-8"?--> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@drawable/icon_bg"> </background></adaptive-icon>もっと複雑なアイコンを作成することもできますが、最も速く、最大の互換性を保ってアイコンを作成できるのは、この方法です。フォアグランド画像とベクター図形の利用に関する詳細については、アダプティブ アイコンのガイドラインを参照してください。
Round アイコンを使用する
Circle (円型) アイコン (このタイプのアイコンがデフォルトで設定されている Android デバイスも新たに出始めています) の代わりに使えるようにするために、Round (丸みのある) アイコンのサポートを提供したい場合もあるでしょう。Round アイコンを作るためには、AndroidManifest.xml に追加が必要になります。これは、Unreal Plugin Language (UPL) を使うことによって簡単に実施できますが、コード プロジェクトを利用する必要があります。 (注記: Blueprint のみのプロジェクトは、空のクラスを追加することによって、コード プロジェクトに変換することができます。) ではまず、108x108 の PNG をもう一枚作成しましょう。名前は icon_round.png とします。そして、このファイルを UE4 プロジェクトのフォルダの Build/Android/res/drawable にコピーします。さらに、AndroidManifest.xml の中で指定対象となる、アイコン リソースのための XML がもう一つ必要となります。プロジェクトの Build/Android/res/drawable-any-dpi-v26 フォルダの中に、icon_round.xml という XML ファイルを新たに作成してから、以下の内容をそのファイルに追加してください。
<!!--?xml version="1.0" encoding="utf-8"?--> <!adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <!background android:drawable="@drawable/icon_round_bg"> <!/background><!/adaptive-icon>
以下の UPL ファイルは、AddRoundIcon_UPL.xml という名前にして、モジュールの Build.cs ファイルが置かれている Source のディレクトリに配置します。これは、通常、uproject のファイル名と同じになります。たとえば、プロジェクトの名前が Match3.uproject であるならば、この UPL ファイルは Source/Match3 に置かれることになります。ファイルの中身は次のようにします。
<!!--?xml version="1.0" encoding="utf-8"?--> <!root xmlns:android="http://schemas.android.com/apk/res/android"> <!!-- init section is always evaluated once per architecture --> <!init> <!/init> <!androidmanifestupdates> <!!-- add roundIcon attribute to application --> <!addattribute name="”android:roundIcon”" tag="”application”" value="”@drawable/icon_round”/"> <!/addattribute><!/androidmanifestupdates> <!/root>
最後に、この UPL ファイルを登録するために、プロジェクトの Build.cs ファイル (先の例では、Source/Match3/Match3.Build.cs になります) に記述を追加します。このファイルに以下の内容を追加してください。
if (Target.Platform == UnrealTargetPlatform.Android) { // Add UPL to add configrules.txt to our APK string PluginPath = Utils.MakePathRelativeTo(ModuleDirectory, Target.RelativeEnginePath); AdditionalPropertiesForReceipt.Add("AndroidPlugin", System.IO.Path.Combine(PluginPath, "AddRoundIcon_UPL.xml")); }
以上が完了したら、通常のパッケージングのワークフローによって、Android のための UE4 プロジェクトをビルドすることができるようになります。その後、プロジェクトをデバイスにデプロイすると、新たなアイコンが表示されるようになります。