SplashScreen'inizin API21'den API23'e kadar tüm API'larda harika görünmesini sağlayacak düzenlenmiş çözüm
Öncelikle bu makaleyi okuyun ve bir açılış ekranı yapmanın İYİ yolunu izleyin.
Logonuz bozuksa veya sığmıyorsa ve yalnızca APIs24 + 'yı hedefliyorsanız, vektör çekilebilirinizi doğrudan xml dosyasında şu şekilde küçültebilirsiniz:
<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>
Yukarıdaki kodda 640x640 tuvale çizdiğim bir çizimi 240x240 olarak yeniden ölçeklendiriyorum. sonra onu açılış ekranıma öylece koydum ve harika çalışıyor:
<?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>
benim kodum aslında sadece alttaki resimde bulunan üçgeni çizmek ama burada bununla neler yapabileceğinizi görüyorsunuz. Bitmap'i kullanırken elde ettiğim pikselli kenarların aksine çözünürlük nihayet harika. öyleyse kesinlikle çizilebilir bir vektör kullanın (özel bir yazılım indirmeden benimkini oluşturmak için kullandığım vectr adında bir site var).
API21-22-23 üzerinde de çalışmasını sağlamak için DÜZENLE
Yukarıdaki çözüm API24 + çalıştıran cihazlar için işe yarasa da, uygulamamı API22 çalıştıran bir cihaz kurduktan sonra gerçekten hayal kırıklığına uğradım. Açılış ekranının yine tüm görünümü doldurmaya çalıştığını ve bok gibi göründüğünü fark ettim. Yarım gün kaşlarımı yırttıktan sonra, sonunda saf irade ile bir çözümü kaba kuvvetle zorladım.
tam olarak açılış ekranı xml'sine benzeyen ikinci bir dosya oluşturmanız (örneğin splash_screen.xml) ve res / klasörde oluşturacağınız drawable-v22 ve drawable-v21 adlı 2 klasöre yerleştirmeniz gerekir (sizi görmek için proje görünümünüzü Android'den Project'e değiştirmeniz gerekir). Bu, ilgili cihaz çekilebilir klasördeki -vXX sonekine karşılık gelen bir API çalıştırdığında telefonunuza bu klasörlere yerleştirilen dosyalara yeniden yönlendirme yapmasını söylemeye yarar, bu bağlantıya bakın . aşağıdaki kodu, bu klasörlerde oluşturduğunuz splash_screen.xml dosyasının Katman listesine yerleştirin:
<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>
Bazı nedenlerden dolayı, bu API'ların çalışması ve jet sonucunun aynı görünmesini sağlamak için çekilebilir dosyanızı bir bitmap'e sarmanız gerekir. Sorun şu ki, splash_screen.xml dosyasının ikinci sürümü açılış ekranınızın 23'ten daha yüksek API'leri çalıştıran cihazlarda hiç gösterilmemesine yol açacağından yaklaşımı ek çekilebilir klasörlerle kullanmanız gerekmesidir. Ayrıca yerleştirmeniz gerekebilir. android varsayılan olarak kaynaklar için bulabileceği en yakın çekilebilir-vXX klasörüne ayarlandığından, splash_screen.xml'nin ilk sürümü drawable-v24'e dönüştürülür.