如何在资源中使用不同的“layerType”值?

时间:2014-10-12 13:38:57

标签: android gpu hardware-acceleration

假设有一个视图在使用GPU加速时会出现问题,但只能使用特定的Android版本。

我希望在这个有问题的版本(包括)之前使用android:layerType =“software”,并在此版本之后使用android:layerType =“hardware”,所有这些都在资源内部。

我知道如何使用字符串和简单资源(使用简单的限定符和多个文件),但是如何使用这种资源呢?我应该在哪里看?

我应该只使用“整数”作为资源吗?还是有更好的,更官方的方式?

注意:我知道如何以编程方式执行此操作。我想知道如何在资源范围内做到这一点。

1 个答案:

答案 0 :(得分:0)

由于您无法从xml访问View类的静态常量,因此您应该使用API​​特定的布局。例如:

RES /布局/ layout.xml

<View
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layerType="software"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

RES /布局-V11 / layout.xml:

<View
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layerType="hardware"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

您还可以在更大的布局中<include layout="@layout/layout"/>,这样您就不必复制所有内容。

然而,更清洁的解决方案(特别是如果您需要多次设置layerType)将是以编程方式设置它。