【问题标题】:Is the duration specified in an XML-defined animation truly in milliseconds?XML 定义的动画中指定的持续时间真的以毫秒为单位吗?
【发布时间】:2011-11-18 19:25:59
【问题描述】:

我正在使用最新版本的支持库,以允许在运行 Android

public void displayFragmentInMainView(Fragment f) {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left,
            android.R.anim.slide_in_left, android.R.anim.slide_out_right);
    transaction.replace(R.id.fragment_holder, f);

    transaction.commit();
}

这里是定义过渡动画之一的 XML:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-50%p" android:toXDelta="0"
        android:duration="500"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="500" />
</set>

正如您在上面的 XML 中看到的,动画的持续时间设置为 500。根据开发者文档,此处指定的单位是毫秒(时间度量)。

我通过测试注意到不同设备的动画持续时间是不同的。如果我为持续时间指定 ms 值,为什么会出现这种情况?

以下是我测试过的设备和结果(主观):

HTC Legend:(低端手机,CPU 速度慢,Android 2.3.3)动画很流畅,可以持续很长时间。

Samsung Galaxy S:(中档 CPU,Android 2.1)动画有点断断续续,比 Legend 上的快

模拟器:(在四核 iMac,Android 4.0 上运行)动画非常快,有时甚至快到你都看不到

基于此,似乎持续时间并不是真正以毫秒为单位衡量的,而是取决于 CPU 速度。有没有其他人注意到类似的结果?有没有办法设置它,以便在阅读文档后使动画速度在不同设备之间保持一致?

【问题讨论】:

    标签: android android-fragments android-animation android-support-library


    【解决方案1】:

    Android定义了3个整数资源

    android.R.integer.config_shortAnimTime
    android.R.integer.config_mediumAnimTime
    android.R.integer.config_longAnimTime
    

    您可以在 XML 或 Java 代码中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 2013-10-13
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多