Я решил это самостоятельно. Чтобы масштабировать всю анимацию, вам нужно программно создавать анимации, и когда вы устанавливаете продолжительность анимации с помощью setDuration();
, вы передаете ей переменную вместо жесткого кодирования в XML.
Теперь каждый раз, когда я вызываю свою анимацию, я передаю ей продолжительность анимации mAnimDuration
и затем на лету создаю новую масштабированную по времени анимацию. Вы заметите, что смещение второй части анимации установлено равным длительности первой части анимации.
Вот пример из моего кода:
AnimationSet rootSet = new AnimationSet(true);
TranslateAnimation transX = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, 0,0,0,0);
transX.setStartOffset(0);
transX.setDuration(mAnimDuration/2);
rootSet.addAnimation(transX);
TranslateAnimation transX2 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, 0,0,0,0);
transX2.setStartOffset(mAnimDuration/2);
transX2.setDuration(mAnimDuration/2);
rootSet.addAnimation(transX2);