Android: 9-patch 启动画面不会保持纵横比

Android: 9-patch splash screen won't maintain aspect ratio

我知道,这个主题几乎比 Android 本身还早,但我几乎已经看完了每一个 9 补丁教程,但我仍然无法让启动画面保持其纵横比。下面是一个 9 补丁 PNG 图像,从教程中直接复制为一个版本,无论宽高比如何,它都应该使徽标居中而不会拉伸。我已经尝试了所有可能的事情,它只是不断地伸展,例如在 16:9 和 18.5:9 设备之间。我做错了什么?

我在 styles.xml 中的启动器主题:

    <style name="AppTheme.Launcher">
    <item name="android:windowBackground" >@drawable/splash</item>
        <item name="colorPrimaryDark">@android:color/black</item>
    </style>

我指向该主题的清单:

android:theme="@style/AppTheme.Launcher"

还有我的 MainActivity,我们在启动时切换回常规主题:

 protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

非常感谢任何帮助,谢谢。

与其将 splash 可绘制对象直接作为 windowBackground 传递,不如尝试将其包含在 layer-list 可绘制对象内的 bitmap 标记中,并将该可绘制对象作为windowBackground.

您还可以在图层列表中的位图下方绘制纯色作为背景。

background_splash.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/splash"/>
    </item>

</layer-list>

然后将其添加到您的样式中:

<item name="android:windowBackground">@drawable/background_splash</item>