将现有闪屏迁移到Android 12 +会导致闪屏失真

5gfr0r5j  于 2023-02-10  发布在  Android
关注(0)|答案(1)|浏览(207)

我们正在尝试迁移(因为崩溃,这似乎与此有关-Here's我的崩溃的另一个问题。
我们现有的闪屏也可用作路由。
以前我们使用全屏矢量作为闪屏的主题,在遵循文档-
https://developer.android.com/develop/ui/views/launch/splash-screen/migrate#prevent_the_custom_activity_from_displaying
把主题更新成这样-

<style name="Theme.App.Starting" parent="Theme.SplashScreen">
    <item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher</item>
    <item name="background">@drawable/background_splash</item>
    <item name="postSplashScreenTheme">@style/AppTheme</item>
</style>

background_splash是我们想要全屏显示的可绘制图像。它不工作吗?
闪屏看起来失真,windowSplashScreenAnimatedIcon被裁剪并在中心放入一个小圆圈。
有人知道如何正确地实现这一点吗?谢谢你的时间!

是否可以提供一个全屏绘制的飞溅根据新的飞溅API为android 12+向后兼容?

hgc7kmma

hgc7kmma1#

已搜索适用于Android-12和较早版本的解决方案,但不喜欢创建多分辨率图像。Android-12更改了闪屏(migration guide)的行为,但这会导致Android-12或较早版本的图标大小合适,但不会同时适用于这两个版本。
最后我用了一个小技巧,添加了两个splash_screen xml文件,一个用于12版和更高版本,另一个用于所有其他版本。给予项目(图像的父项)一个dp大小,给位图一个gravity=“fill”。两个splash_screen xml的大小不同,我不知道是否有一个官方的解决方案来解决这个问题。

  • 资源/值/样式.xml*
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
  <item name="windowSplashScreenBackground">#387aa8</item>
  <item name="windowSplashScreenAnimatedIcon">@drawable/splash_screen</item>
  <item name="postSplashScreenTheme">@style/MainTheme</item>
</style>
  • 资源/可绘制文件/splash_screen.xml*
<?xml version="1.0" encoding="utf-8" ?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:width="224dp" android:height="224dp" android:gravity="center">
        <bitmap
            android:src="@drawable/silent_notes_256"
            android:gravity="fill"/>
    </item>
</layer-list>
  • 资源/可绘制-v31/splash_screen.xml(安卓12及更高版本)*
<?xml version="1.0" encoding="utf-8" ?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:width="128dp" android:height="128dp" android:gravity="center">
        <bitmap
            android:src="@drawable/silent_notes_256"
            android:gravity="fill"/>
    </item>
</layer-list>

虽然我用不同的分辨率做了测试,但我不知道这是否适用于所有屏幕尺寸/分辨率组合。

相关问题