Android SplashScreen API 与 AppCompatActivity 和 Material 不兼容

问题描述 投票:0回答:1

似乎Android Splash Screen API与AppCompatActivity和Material Theme不兼容。好的,正如链接中所说,它只涉及 Activity-class 而不是 AppCompatActivity-class,但我没有意识到这一限制,并花了几天时间用这个 API 实现 SpashScreen,因为它似乎非常简单且易于使用,但是现实远非如此。

Igor Escodro 告诉我们有关 实现核心 Splashscreen API 的基础知识,但没有告诉是 Android 指南。您必须定义 Spash Screen 主题,然后定义正常的应用程序正常主题,但不幸的是,他没有提到,材料主题不受支持,即使它们与片段和 AppCompat 类一起工作得很好。不幸的是,他们没有提到您不能再将 AppCompatActivity 与 Material 主题与材质一起使用,因为材质主题未设置为活动,而是标准主题,即使“postSplashScreenTheme”在启动屏幕主题中正确设置。

对于我或大多数其他应用程序开发人员来说,将AppCompatActivity更改为Activity是不可能的,因为许多需求需要AppCompatActivity而Activity不兼容。我们不希望我们的应用程序加载到所有手机上,而不仅仅是最新的 Android 手机和 AppCompatActivity 操作系统工具来做到这一点。

在与 SplashScreen API 斗争了几天之后,我想知道 Google 的 Android 开发发生了什么,为什么他们发布了根本无法在旧应用程序和旧手机上使用的 API。为什么文档这么差。

如果您能建议我如何使我的应用程序与 AppCompatActivitys、Fragments 和 Material Theme 一起工作,我保证会非常高兴。

android android-activity material-design appcompatactivity android-splashscreen
1个回答
0
投票

嗯...我学习更多了。似乎正如主题中的文档所述

<style name="Theme.MySplash" parent="Theme.SplashScreen">
  name="windowSplashScreenAnimatedIcon">@mipmap/ic_launcher_round</item>
  <item name="postSplashScreenTheme">@style/Theme.MyTheme.Material</item>  
</style>

还不够。您必须在每个活动的清单中添加它们使用您的材料主题(如果他们像我的应用程序一样使用),如

    <activity
        android:name="..."
        ...
        android:theme="@style/Theme.MyTheme.Material"
        >
    </activity>

对于使用材料主题的每项活动。之后应用程序就可以正常工作了。

© www.soinside.com 2019 - 2024. All rights reserved.