Объединение Tween с покадровой анимацией

У меня все еще проблемы с самой базовой потребностью. Я хочу иметь 2 кнопки: одна запускает анимацию движения, которая перемещает изображение на 50 пикселей, другая кнопка запускает покадровую анимацию этого изображения.

после завершения анимации движения кадр за кадром анимация выполняется в неправильном месте. странный. Я использую FillAfter/FillEnabled,

код для запуска анимации движения представляет собой базовый TranslateAnimation(0, 50, 0 , 0) с заливкой после и fillEnabled = true.

код кадра за кадром: image.setImageDrawable(getResources().getDrawable(resourceId)); ((AnimationDrawable) image.getDrawable()).start();

помощь будет оценена.

Ваше здоровье


person Gury Traub    schedule 23.05.2011    source источник


Ответы (1)


Единственный способ, который я нашел для этого, - сначала вы перемещаете позицию изображения, используя setLayoutParams с новыми полями, и только затем вы запускаете TranslateAnimation, используя (-x, -y, 0, 0), поэтому для моего конкретного случая в вопросе , вот мой код:

TranslateAnimation tweenAnim = new TranslateAnimation(-1 * XStep, -1  * YStep , 0, 0);
tweenAnim.setDuration(number_of_steps * 750);
tweenAnim.setFillAfter(true);
tweenAnim.setFillEnabled(true);
tweenAnim.setInterpolator(new LinearInterpolator());

 //layout positioning
lp.leftMargin  += XStep;
lp.bottomMargin += YStep;
imageView.setLayoutParams(lp);

Log.v(TAG, "leftMargin=" + lp.leftMargin);
Log.v(TAG, "bottomMargin=" + lp.bottomMargin);

imageView.startAnimation(tweenAnim);

Это была огромная боль. шутки в сторону. спасибо за http://www.clingmarks.com/?p=400. Мне удалось Преодолей это.

person Gury Traub    schedule 24.05.2011