Действительно ли длительность, указанная в анимации, определенной в формате XML, указывается в миллисекундах? - PullRequest
5 голосов
/ 18 ноября 2011

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

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) анимация ОЧЕНЬ быстрая, иногда такая быстрая, что вы даже не видите ее

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

1 Ответ

0 голосов
/ 16 октября 2015

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

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

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

...