【问题标题】:Where should i store animation values?我应该在哪里存储动画值?
【发布时间】:2013-06-02 08:13:24
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过values文件夹吗?
  • 还没有。除了使用我自己的 xml 文件,我应该使用 /res/values/dimens.xml 吗?
  • 您可以使用尺寸文件并为您想要的每个配置提供一个文件夹。

标签: android xml animation


【解决方案1】:

您应该在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 做的一样!
【解决方案2】:

要检查设备是电话还是选项卡,您可以在名为 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 动态设置动画的持续时间

【讨论】:

  • 那么为什么不在 valuesxxx 文件夹中创建一个单独的 .xml 文件呢?
  • 除了布尔值之外,您必须使用相同的 xml 创建两个单独的文件夹。
  • 谢谢,但我认为@Neil 的回答更容易(至少对于我想做的),看看吧!
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2019-04-25
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多