我应该在哪里存储动画值?

时间:2013-06-02 08:13:25

标签: android xml animation

我的应用程序中有一些动画,它们工作正常。但我想修改手机ui和平板电脑ui之间的行为(例如)。那么我应该在哪里设置行值(例如android:duration =“xxx”)?

[...]
<translate 
     android:duration="700"
     android:fromYDelta="90%p"
     android:toYDelta="0"/>
[...]

根据official documentation ,没有首选的地方。

2 个答案:

答案 0 :(得分:11)

您应该在values文件夹中存储您希望在屏幕尺寸上有所不同的值。例如,您可以将一个名为values的文件夹作为默认值,一个名为values-sw600dp,并在其中指定一个持续时间的值,该值仅适用于宽度最小为600dp的屏幕。

然后在valuesvalues-sw600dp中,您可以拥有一个名为translation.xml的文件或其他描述动画的文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="duration">700</integer>
</resources>

然后你在哪里做动画xml:

<translate 
     android:duration="@integer/duration"
     android:fromYDelta="90%p"
     android:toYDelta="0"/>

通过这种方式,您可以根据文件夹名称为不同的设备大小指定不同的设置,就像使用drawable一样。

答案 1 :(得分:0)

要检查设备是手机还是标签,你可以在名为isTab.xml(或任何你想要的)的值文件夹中创建一个xml,其中的代码将是

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="isTablet">false</bool> </resources>

和values-xlarge文件夹中的xml相同,但在xml中的值为true,即

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="isTablet">true</bool> </resources>

现在当它是一个标签时,将访问value-xlarge文件夹。您可以通过

获取程序中的值
boolean isTab= getResources().getBoolean(R.bool.isTablet);

并且根据isTab值,您可以按this

动态设置动画的持续时间