编辑后的解决方案,可以让您的启动屏在包括API21到API23在内的所有API上看起来很棒
首先阅读此文,并遵循良好的启动屏制作方式。
如果您的Logo变形或无法适应,并且您只针对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">
<item>
<shape>
<size android:height="120dp" android:width="120dp"/>
<solid android:color="@android:color/white"/>
</shape>
</item>
<item
android:drawable="@drawable/logo_vect"
android:gravity="center">
</item>
</layer-list>
我的代码实际上只在底部的图片中绘制三角形,但你可以看到用它可以实现什么。分辨率最终很棒,与使用位图时得到的像素化边缘相反。所以一定要使用矢量可绘制(有一个名为Vectr的网站,我用它创建自己的文件而不必下载专业软件)。
编辑以使其在API21-22-23上也能正常工作
虽然上面的解决方案适用于运行API24+的设备,但在安装了我的应用程序后,在运行API22的设备上,我感到非常失望。我注意到启动画面再次尝试填充整个视图并看起来很糟糕。在折磨了半天后,我终于通过纯粹的毅力 brute-forced 找到了解决方案。
你需要创建第二个文件,命名为和启动画面xml完全相同(比如说splash_screen.xml),并将其放置在两个文件夹中,这两个文件夹称为 drawable-v22 和 drawable-v21,你需要在 res/ 文件夹中创建它们(为了查看它们,你需要将项目视图从 Android 更改为 Project)。这是为了告诉手机在相关设备运行与 drawable 文件夹中的-vXX 后缀对应的API时,将重定向到放置在这些文件夹中的文件,请参见此链接。 将以下代码放入在 splash_screen.xml 文件的 Layer-list 中,你需要在这些文件夹中创建它:
<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>
![这是文件夹的外观](https://istack.dev59.com/hJPNc.webp)
由于某些API的原因,您必须将可绘制对象包装在位图中才能使其正常工作,最终结果看起来相同。问题在于,您必须使用额外的drawable文件夹的方法,因为第二个版本的splash_screen.xml文件会导致在运行API大于23的设备上根本不显示闪屏。您还可能需要将第一个版本的splash_screen.xml放入drawable-v24中,因为Android会默认使用它可以找到的最接近的drawable-vXX文件夹来查找资源。
![我的启动画面](https://istack.dev59.com/sSNX0.webp)