SplashScreenをAPI21からAPI23を含むすべてのAPIで見栄えよくする編集済みソリューション
まず最初にこの記事を読み、スプラッシュスクリーンを作成するための良い方法に従ってください。
ロゴが歪んでいるか適合しない場合、APIs24 +のみを対象とする場合は、次のようにXMLドローアブルで直接ベクトルドローアブルを直接縮小できます。
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
android:viewportWidth="640"
android:viewportHeight="640"
android:width="240dp"
android:height="240dp">
<path
android:pathData="M320.96 55.9L477.14 345L161.67 345L320.96 55.9Z"
android:strokeColor="#292929"
android:strokeWidth="24" />
</vector>
上記のコードでは、640x640のキャンバスに描画したドローアブルを240x240に再スケーリングしています。次に、スプラッシュスクリーンのドローアブルにそのように配置するだけで、うまく機能します。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"
android:paddingBottom="20dp" android:paddingRight="20dp" android:paddingLeft="20dp" android:paddingTop="20dp">
<!-- The background color, preferably the same as your normal theme -->
<item>
<shape>
<size android:height="120dp" android:width="120dp"/>
<solid android:color="@android:color/white"/>
</shape>
</item>
<!-- Your product logo - 144dp color version of your app icon -->
<item
android:drawable="@drawable/logo_vect"
android:gravity="center">
</item>
</layer-list>
私のコードは実際には下の図の三角形のみを描画していますが、ここではこれで何ができるかがわかります。ビットマップを使用したときに得られたピクセル化されたエッジとは対照的に、最終的に解像度は素晴らしいです。そのため、ベクタードローアブルを必ず使用してください(専用のソフトウェアをダウンロードする手間をかけずに鉱山を作成するために使用していたvectrというサイトがあります)。
API21-22-23でも機能するように編集します
上記のソリューションはAPI24 +を実行するデバイスで機能しますが、API22を実行するデバイスにアプリをインストールした後、私は本当にがっかりしました。スプラッシュスクリーンが再びビュー全体を埋めようとしているように見え、たわごとのように見えました。眉毛を半日引き裂いた後、私はついに完全な意志力で解決策を総当たりにした。
スプラッシュスクリーンxml(splash_screen.xmlなど)とまったく同じ名前の2つ目のファイルを作成し、それをdrawable-v22およびdrawable-v21と呼ばれる2つのフォルダーに配置する必要があります。プロジェクトビューをAndroidからProjectに変更する必要があります)。これは、関連するデバイスがドローアブルフォルダーの-vXXサフィックスに対応するAPIを実行するたびに、これらのフォルダーに配置されたファイルにリダイレクトするように電話に指示するのに役立ちます。このリンクを参照してください。これらのフォルダーに作成するsplash_screen.xmlファイルのLayer-listに次のコードを配置します。
<item>
<shape>
<size android:height="120dp" android:width="120dp"/>
<solid android:color="@android:color/white"/>
</shape>
</item>
<!-- Your product logo - 144dp color version of your app icon -->
<item android:gravity="center">
<bitmap android:gravity="center"
android:src="logo_vect"/>
</item>
これらのAPIの何らかの理由で、ドローアブルを機能させるためにビットマップでラップし、最終結果を同じに見えるようにする必要があります。問題は、splash_screen.xmlファイルの2番目のバージョンにより、23を超えるAPIを実行しているデバイスでスプラッシュスクリーンがまったく表示されなくなるため、アプローチを追加のドローアブルフォルダーで使用する必要があることです。また、 androidのデフォルトとして、splash_screen.xmlの最初のバージョンをdrawable-v24に追加します。これは、リソース用に見つけることができる最も近いdrawable-vXXフォルダーにデフォルトで設定されます。