Подтвердить что ты не робот

Андроиды ObjectAnimator.ofFloat не работают должным образом

Я использовал ObjectAnimator.ofFloat в Android-приложении, которое не работает на каждом устройстве одинаково.

MainActivity (расширяет действие):

Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startAnimation();
    }
});


public void startAnimation() {
    ImageView aniView = (ImageView) findViewById(R.id.imageView1);
    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(aniView, "alpha", 0f);
    fadeOut.setDuration(2000);

    ObjectAnimator mover = ObjectAnimator.ofFloat(aniView, "translationX", -500f, 0f);
    mover.setInterpolator(new TimeInterpolator() {
        @Override
        public float getInterpolation(float input) {
            Log.v("MainActivity", "getInterpolation() " + String.format("%.4f", input));
            return input;
        }
    });
    mover.setDuration(2000);

    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(aniView, "alpha", 0f, 1f);
    fadeIn.setDuration(2000);

    AnimatorSet animatorSet = new AnimatorSet();

    animatorSet.play(mover).with(fadeIn).after(fadeOut);
    animatorSet.start();
}

Samsung Galaxy S4 (Android 4.4.2):

    getInterpolation() 1,0000
    getInterpolation() 1,0000

Samsung Galaxy S5 (Android 4.4.2):

    getInterpolation() 0,0000
    getInterpolation() 0,0000
    getInterpolation() 0,0085
    getInterpolation() 0,0170
    getInterpolation() 0,0255
    ...
    ...
    getInterpolation() 0,9740
    getInterpolation() 0,9825
    getInterpolation() 0,9910
    getInterpolation() 0,9995
    getInterpolation() 1,0000

У кого-нибудь есть идея, почему это не работает должным образом?

4b9b3361

Ответ 1

В Galaxy S4 в разделе "Параметры разработчика" есть опция "Длительность анимации". По какой-то дикой причине это по умолчанию отключено. После переключения на 1x мои анимации на S4 начали работать отлично. Это может быть причиной вашей проблемы.