使用值文件夹为不同的 API 版本设置不同的资源值

Setting different resource values using values folder for different API versions

我注意到在 Android 6 上出现崩溃并显示错误消息 - "A/OpenGLRenderer: Error: Ambient Vertex Buffer overflow!!!" 将清单文件中的 activity 的硬件加速设置为 false 解决了问题,但影响了性能应用程序(导致应用程序变慢)。

我只想在 android 版本为 23 (android M) 时将值设置为 false,否则不设置。以下是我的处理方式:

Android 清单文件:

<activity
android:name=".MainActivity"
android:hardwareAccelerated="@bool/hardwareAcceleratedValue">

res/values/bool.xml

<resources>
    <bool name="hardwareAcceleratedValue">true</bool>
</resources>

res/values-v23/bool.xml

<resources>
    <bool name="hardwareAcceleratedValue">false</bool>
</resources>

有了这个,我注意到 Android M 设备(这是预期的)和 Android 9 的设备上的性能较慢。所以我继续为 [= 创建了另一个文件夹59=] 9 并以 "hardwareAcceleratedValue" 为真将文件添加到其中,性能更快。

问题 -

对于 android API 除了 v23,不应该 android 从 res/values/bool.xml 读取 "hardwareAcceleratedValue" 值?或者我必须为每个 android API 创建单独的文件夹并在其中创建一个 bool.xml 文件,即 res/values-v28/bool.xml 或 res/values-v27/bool。 xml?

我如何才能将 "hardwareAcceleratedValue" 设置为仅对 Android-M 或更小的版本设置为 false,对 android-M 之后的所有版本设置为 true?

For android API's other than v23, shouldn't android read the "hardwareAcceleratedValue" value from res/values/bool.xml?

-v23 用于 API 级别 23 及更高级别

How can I just set "hardwareAcceleratedValue" to false only for Android-M or less and true for all versions beyond android-M?

res/values/bool.xml 中有 false,在 res/values-v22/bool.xml 中有 true。 Android M 是 API 级别 21,因此 -v22 将用于所有更高版本。

如果 "android-M" 是指 Android 5.x,则 res/values/bool.xml 中有 falseres/values-v23/bool.xml 中有 true , 因为 Android 5.1 是 API 级别 22.