Solução editada que fará com que seu SplashScreen tenha uma ótima aparência em todas as APIs, incluindo API21 a API23
Antes de mais nada leia este artigo e siga a BOA maneira de fazer uma tela inicial.
Se o seu logotipo estiver distorcido ou não couber e você está direcionando apenas para APIs24 +, você pode simplesmente reduzir seu drawable vetorial diretamente em seu arquivo xml assim:
<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>
no código acima, estou redimensionando um drawable que desenhei em uma tela de 640x640 para 240x240. em seguida, coloco-o no drawable da tela inicial e funciona muito bem:
<?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>
meu código está, na verdade, apenas desenhando o triângulo na imagem na parte inferior, mas aqui você vê o que pode fazer com isso. A resolução finalmente é ótima, ao contrário das bordas pixeladas que recebia ao usar bitmap. portanto, use um drawable vetorial por todos os meios (há um site chamado vectr que usei para criar o meu sem o incômodo de baixar um software especializado).
EDITAR para que funcione também na API21-22-23
Embora a solução acima funcione para dispositivos que executam API24 +, fiquei muito desapontado depois de instalar meu aplicativo em um dispositivo que executam API22. Notei que a tela inicial estava novamente tentando preencher a visão inteira e parecendo uma merda. Depois de arrancar minhas sobrancelhas por meio dia, finalmente forcei brutalmente uma solução por pura força de vontade.
você precisa criar um segundo arquivo nomeado exatamente como o xml splashscreen (digamos splash_screen.xml) e colocá-lo em 2 pastas chamadas drawable-v22 e drawable-v21 que você criará na pasta res / (para vê-los você tem que mudar sua visão do projeto de Android para Projeto). Isso serve para instruir seu telefone a redirecionar para arquivos colocados nessas pastas sempre que o dispositivo relevante executar uma API correspondente ao sufixo -vXX na pasta drawable, consulte este link . coloque o seguinte código na lista de camadas do arquivo splash_screen.xml que você cria nestas pastas:
<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 alguma razão para essas APIs, você precisa envolver seu drawable em um bitmap para fazê-lo funcionar e fazer com que o resultado final pareça o mesmo. O problema é que você deve usar a abordagem com as pastas adicionais de drawable, pois a segunda versão do arquivo splash_screen.xml fará com que sua tela inicial não seja exibida em dispositivos que executam APIs superiores a 23. Você também pode ter que colocar a primeira versão do splash_screen.xml em drawable-v24 como padrão do Android para a pasta drawable-vXX mais próxima que ele pode encontrar para recursos.