2013-10-09 5 views
3

Я реализую масштабную анимацию для практики в игре. Я следую всем проводникам, но что-то странное происходит всегда, вместо того, чтобы сделать объект более крупным. анимация не только делает изображение больше, но и перемещает его, даже если я не использую перевести анимацию ...Масштаб Анимация, ведущая как анимация перевода

здесь XML-файл

<?xml version="1.0" encoding="utf-8"?> 
<set android:shareInterpolator="false"  
xmlns:android="http://schemas.android.com/apk/res/android"> 
<scale 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fromXScale="1.0" 
    android:toXScale="1.4" 
    android:fromYScale="1.0" 
    android:toYScale="1.4" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:fillAfter="false" 
    android:duration="1000" /> 
</set> 

и здесь его называют в Java

private void startAnimation(final ImageView imageView) { 
     final Animation popAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.scalebounce); 
     imageView.startAnimation(popAnim); 
     popAnim.setAnimationListener(new AnimationListener() { 

      public void onAnimationStart(Animation animation) { 

      } 

      public void onAnimationRepeat(Animation animation) { 

      } 

      public void onAnimationEnd(Animation animation) { 
       imageView.clearAnimation(); 
       imageView.setVisibility(View.GONE); 
      } 
     }); 
    } 

его действительно странно, я попробовал все решения, которые я нашел в сети, но не повезло, что это все еще делает, что переводит поведение, даже если это только масштаб ... im, делая изображение с маленькой точки, тогда оно становится больше (нормальный размер) , но я не хочу, чтобы он двигался, просто чтобы быть на своем месте. спасибо :)

P.S Я наблюдал за анимацией, и кажется, что она занимает больше места, поэтому кажется, что она перемещается. Почему это занимает больше места? а не фактический размер изображения?

ответ

2

pivotX & pivotY должен быть равен окружению, где ваш вид должен масштабироваться.

Чтобы продемонстрировать, вот схема для иллюстрации:

enter image description here

Ваша точка опоры в настоящее время вне поля зрения, что делает это похоже на ваш взгляд движется, а также масштабирования.

Установите pivotX/pivotY как 0, если вы хотите, чтобы точка поворота находилась в верхнем левом углу вашего вида.

Установите pivotX = view.getWidth()/2f & pivotY = view.getHeight()/2f, если вы хотите, чтобы масштаб быть от центра (например, демонстрирует первое изображение)

Надеется, что это помогает :)

+0

привета спасибо .. Ive получил вопрос .. 50% pivotX и Y не центр? – NoobMe

+0

Я не уверен, как 50% интерпретируется во время выполнения. –

+0

ОК я попробую спасибо ~ – NoobMe

1

У меня было такая же проблема. Я не знаю, похоже ли это почти так же, как моя, но мабы это может помочь. Ihad кнопки в scrollview с relativelayout в relativelayout.When я хотел оживить масштаб моих кнопок ther была такая же проблема, как ваша, поэтому я сделал это в java-коде, а не в xml, но не было никакой разницы между RELATIVE_TO_PARENT и RELATIVE_TO_SELF. Я узнал, что стержень был каждый раз взят от родителя кнопок (scrollview). Не знаю, почему. поэтому я решил рассчитать стержень из Scrollview, что там, где моя кнопка:

ScaleAnimation animation = new ScaleAnimation(1.0f, 1.1f, 1.1f, 1.0f, Animation.RELATIVE_TO_PARENT, (float) (button1.getX()+ 45*ssu)/width, Animation.RELATIVE_TO_PARENT, (float) (button1.getY()+ 45*ssu)/(4 * height)); 
       animation.setDuration(1000); 
       animation.setRepeatMode(ValueAnimator.REVERSE); 
       animation.setRepeatCount(animation.INFINITE); 
       button1.startAnimation(animation); 

Вы можете видеть, что я разделить на pivotX часть (х положение моей кнопки) вверг ширину отверстия и для поворота части (позиция y моей кнопки) высота отверстия прокрутки (высота 4 *) и добавлена ​​также 45 * ssu к позиции кнопок, потому что половина ее и когда вы этого не делаете, ось находится в левый верхний угол. PS: SSU является самопроизведённым скейлером, потому что я установить ширину и высоту кнопки в Java коде 90 * SSU

Надежда II поможет вам :)

Смежные вопросы