7

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

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

根据官方文档,没有首选的地方。

4

2 回答 2

14

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

然后在valuesandvalues-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"/>

这样,您可以根据文件夹名称为不同的设备大小指定不同的设置,就像使用可绘制对象一样。

于 2013-06-02T09:16:32.313 回答
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 值,您可以通过此动态设置动画的持续时间

于 2013-06-02T09:46:16.340 回答