Solusi yang diedit yang akan membuat SplashScreen Anda tampak hebat di semua API termasuk API21 hingga API23
Pertama-tama baca artikel ini dan ikuti cara BAGUS membuat layar splash.
Jika logo Anda terdistorsi atau tidak sesuai dan Anda hanya menargetkan APIs24 + Anda cukup menurunkan drawable vektor Anda langsung di file xml seperti:
<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>
pada kode di atas saya mengubah ukuran drawable yang saya gambar di kanvas 640x640 menjadi 240x240. lalu saya taruh saja di layar splash drawable saya seperti itu dan itu berfungsi dengan baik:
<?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>
kode saya sebenarnya hanya menggambar segitiga pada gambar di bagian bawah tetapi di sini Anda melihat apa yang dapat Anda capai dengan ini. Resolusi akhirnya bagus dibandingkan dengan tepi pixelated yang saya dapatkan saat menggunakan bitmap. jadi gunakan drawable vektor dengan segala cara (ada situs bernama vectr yang saya gunakan untuk membuat milik saya tanpa perlu mengunduh perangkat lunak khusus).
EDIT untuk membuatnya berfungsi juga di API21-22-23
Sementara solusi di atas berfungsi untuk perangkat yang menjalankan API24 +, saya benar-benar kecewa setelah menginstal aplikasi saya, perangkat yang menjalankan API22. Saya perhatikan bahwa splashscreen lagi-lagi mencoba memenuhi seluruh tampilan dan terlihat seperti kotoran. Setelah merobek alis saya selama setengah hari, saya akhirnya memaksakan solusi dengan kemauan keras.
Anda perlu membuat file kedua dengan nama persis seperti splashscreen xml (katakanlah splash_screen.xml) dan letakkan ke dalam 2 folder bernama drawable-v22 dan drawable-v21 yang akan Anda buat di folder res / (untuk melihatnya, Anda harus mengubah tampilan proyek Anda dari Android ke Proyek). Ini berfungsi untuk memberi tahu ponsel Anda untuk mengalihkan ke file yang ditempatkan di folder tersebut setiap kali perangkat yang relevan menjalankan API yang sesuai dengan sufiks -vXX di folder drawable, lihat tautan ini . tempatkan kode berikut di Daftar lapisan file splash_screen.xml yang Anda buat di folder ini:
<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>
Untuk beberapa alasan untuk API ini, Anda harus membungkus drawable Anda dalam bitmap untuk membuatnya berfungsi dan hasil akhirnya terlihat sama. Masalahnya adalah Anda harus menggunakan pendekatan dengan folder drawable tambahan karena versi kedua dari file splash_screen.xml akan menyebabkan layar splash Anda tidak ditampilkan sama sekali pada perangkat yang menjalankan API yang lebih tinggi dari 23. Anda mungkin juga harus menempatkannya versi pertama splash_screen.xml ke dalam drawable-v24 sebagai default android ke folder drawable-vXX terdekat yang dapat ditemukannya untuk sumber daya.