我最近开始学习Android编程。我了解到Android从Android API 21开始支持Material Theme。
昨天,我用一个活动创建了一个小型测试应用程序。该活动扩展了Activity类。最小SDK为19,目标SDK为27,编译SDK为27。
现在我将主题更改为Material.Dialog并在Android 27设备中运行该应用程序。它按预期完美地运作。
但是,我试图在Android 19设备上运行它,我预计它不会运行。但它运行没有错误。当然,它没有正确呈现Material.Dialog主题;它使它像常规的黑暗主题。该应用程序功能齐全。
让我感到惊讶。如果在低于21的API上运行,为什么使用Material Theme的应用程序不会中断? API级别21不是物质主题的硬性要求吗?
另外,我了解到Android是向后兼容的(为较旧的API设计的程序可以在较新的API上运行。)它是否也向前兼容?
build.gradle依赖项部分如下所示:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
API 19的Android模拟器的屏幕截图如下所示: http://8-bit.nl/ag-admin/import.php?action=node
答案 0 :(得分:0)
幸运的是,我与我的一位同事交谈,他回答了我的问题。以下是简短的对话历史记录:
我的同事:主题只影响应用的外观和感觉。因此,如果在API 19设备上加载应用程序,预计该应用程序将继续运行但无法正常显示。
我:谢谢。我没有使用支持库来更好地理解Android兼容性。 因此,基于您的答案,从技术上讲,即使在API 10,我的应用程序也应该正常运行。对吗? (但不能正确呈现。)
我的同事:是的,应该
因此,虽然https://developer.android.com/training/material/theme.html表示"材料主题仅适用于Android 5.0(API级别21)及更高版本。",但不应将其解释为&# 34;如果一个应用程序使用了材料主题,那么它将无法在低于21的API级别工作并且打破#34;它应解释为"它可能无法在低于21的API级别正确呈现,但仍能正常运行。"