Solución editada que hará que su SplashScreen se vea genial en todas las API, incluidas API21 a API23
En primer lugar, lea este artículo y siga la BUENA forma de crear una pantalla de bienvenida.
Si su logotipo está distorsionado o no encaja y solo está apuntando a APIs24 +, simplemente puede reducir su vector dibujable directamente en su archivo xml de la siguiente manera:
<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>
en el código anterior, estoy cambiando la escala de un elemento de dibujo que dibujé en un lienzo de 640x640 para que sea 240x240. luego lo puse en mi pantalla de presentación dibujable así y funciona muy bien:
<?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>
mi código en realidad solo dibuja el triángulo en la imagen en la parte inferior, pero aquí puede ver lo que puede lograr con esto. La resolución es finalmente excelente en comparación con los bordes pixelados que obtenía al usar mapa de bits. así que use un dibujo vectorial por todos los medios (hay un sitio llamado vectr que usé para crear el mío sin la molestia de descargar software especializado).
EDITAR para que funcione también en API21-22-23
Si bien la solución anterior funciona para dispositivos que ejecutan API24 +, me decepcionó mucho después de instalar mi aplicación en un dispositivo que ejecuta API22. Me di cuenta de que la pantalla de bienvenida intentaba volver a llenar toda la vista y parecía una mierda. Después de arrancarme las cejas durante medio día, finalmente forcé brutalmente una solución por pura fuerza de voluntad.
necesita crear un segundo archivo llamado exactamente como el xml de la pantalla de presentación (digamos splash_screen.xml) y colocarlo en 2 carpetas llamadas drawable-v22 y drawable-v21 que creará en la carpeta res / (para poder verlas usted tienes que cambiar la vista de tu proyecto de Android a Project). Esto sirve para decirle a su teléfono que redirija a los archivos ubicados en esas carpetas siempre que el dispositivo relevante ejecute una API correspondiente al sufijo -vXX en la carpeta dibujable, vea este enlace . coloque el siguiente código en la lista de capas del archivo splash_screen.xml que crea en estas carpetas:
<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>
Por alguna razón, para estas API, debe envolver su elemento de dibujo en un mapa de bits para que funcione y el resultado final se vea igual. El problema es que debe usar el enfoque con las carpetas extraíbles adicionales, ya que la segunda versión del archivo splash_screen.xml hará que su pantalla de presentación no se muestre en absoluto en los dispositivos que ejecutan API superiores a 23. También es posible que deba colocar la primera versión de splash_screen.xml en drawable-v24 ya que Android tiene por defecto la carpeta drawable-vXX más cercana que puede encontrar para los recursos.