Действительно ли продолжительность, указанная в XML-анимации, указана в миллисекундах?

Я использую последнюю версию библиотеки поддержки, чтобы разрешить использование фрагментов на устройствах с версиями Android ‹ 3.0. Каждый раз, когда я хочу переключить текущий фрагмент, я делаю это, используя этот код:

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. Согласно документации разработчика, единицы измерения, указанные здесь, указаны в мс (мера времени).

При тестировании я заметил, что продолжительность анимации на разных устройствах разная. Почему это так, если я указываю значение мс для продолжительности?

Вот устройства, на которых я тестировал, и результаты (субъективные):

HTC Legend: (бюджетный телефон с медленным процессором, Android 2.3.3) анимация плавная и длится ровно столько, сколько мне бы хотелось.

Samsung Galaxy S: (средний процессор, Android 2.1) анимация несколько прерывистая и работает быстрее, чем на Legend.

Эмулятор: (работает на четырехъядерном iMac, Android 4.0) анимация ОЧЕНЬ быстрая, иногда настолько быстрая, что вы ее даже не видите

Исходя из этого, кажется, что продолжительность на самом деле не измеряется в мс, а зависит от скорости процессора. Кто-нибудь еще замечал подобные результаты? Есть ли способ настроить его так, чтобы скорость анимации была одинаковой на всех устройствах, как и следовало ожидать после прочтения документации?


person howettl    schedule 18.11.2011    source источник


Ответы (1)


Android определяет 3 целочисленных ресурса

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

которые вы можете использовать в коде XML или Java.

person Some Noob Student    schedule 16.10.2015