Відредаговане рішення, яке зробить ваш SplashScreen чудовим для всіх API, включаючи API21 до API23
Перш за все прочитайте цю статтю та дотримуйтесь ДОБРОГО способу виготовлення екрана.
Якщо ваш логотип перекручений або не підходить, і ви орієнтуєтесь лише на API24 +, ви можете просто масштабувати векторний малюнок прямо у своєму 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, який я використовував для створення шахти без хелела для завантаження спеціалізованого програмного забезпечення).
EDIT, щоб він також працював на API21-22-23
Хоча рішення вище працює для пристроїв, що управляють API24 +, я дуже розчарувався, встановивши свій додаток на пристрій під керуванням API22. Я помітив, що бризки екрана знову намагаються заповнити весь погляд і виглядають як лайно. Після того, як я розірвав брови на півдня, я нарешті жорстоко примусив рішення за допомогою чистої сили волі.
вам потрібно створити другий файл, названий точно так само, як splashscreen xml (скажімо, splash_screen.xml) і помістити його у дві папки, звані dravable-v22 та dravable-v21, які ви створите у res / folder (для того, щоб побачити їх ви повинні змінити подання проекту з Android на Project). Це служить для того, щоб ваш телефон перенаправляв на файли, розміщені в цих папках, коли відповідний пристрій запускає API, відповідний суфіксу -vXX у папці, що перетягується, див. Це посилання . розмістіть такий код у списку шарів файлу splash_screen.xml, який ви створюєте у цих папках:
<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 вам потрібно загорнути малюнок у растрову карту, щоб змусити його працювати і струмувати, щоб кінцевий результат виглядав так само. Проблема полягає в тому, що вам доведеться використовувати aproach з додатковими перетягуваними папками, оскільки друга версія файлу splash_screen.xml призведе до того, що ваш екран сплеску взагалі не відображатиметься на пристроях, на яких працює API більше 23 років. Можливо, вам доведеться розмістити Перша версія splash_screen.xml в dravable-v24 як андроїд за замовчуванням до найближчої папки dravable-vXX, яку вона може знайти для ресурсів.