Проблемы с позиционированием Android-анимации - PullRequest
0 голосов
/ 25 августа 2011

Я пытаюсь сделать две анимации перевода в Android, и у меня возникают проблемы с ними:

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

Это мой макет xml:

    <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:background="@drawable/bg"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <ImageView  android:id="@+id/anim_image" android:src="@drawable/movimage"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:visibility="invisible"  android:layout_marginTop="30dp"
    />

</FrameLayout>

Этоmy anim xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
 android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0"
 android:pivotX="40%" android:pivotY="30%" android:duration="4000" />
     <set>
        <translate 
            android:fromXDelta="200%p" android:toXDelta="-150%p" android:fromYDelta="20%"
            android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" />
    </set>
 </set>

И в моем java-классе я создал таймер обратного отсчета, который вызывает каждый onTick: image.startAnimation (anim);

Я также пытался прослушать анимацию: anim.setAnimationListener (this);

И добавьте в onAnimationEnd: image.setVisibility (View.GONE);

Но это не помогло мне.Кто-нибудь знает, что я могу сделать, чтобы это исправить?

-

  1. Я пытаюсь показать изображение "падающей звезды" - я создал небольшой файл png (30px * 30px), и я пытаюсь расположить его на одном краю экрана и позволить ему переместиться на другой и исчезнуть.Но каждый код, который я пишу в аниме XML, этого не делает!Может кто-нибудь помочь мне с написанием анимации правильно?

Я написал: translate android: fromXDelta = "100% p" android: toXDelta = "- 100% p" android: fromYDelta = "0% p" android: toYDelta = "100%p "android: duration =" 500 "

И это не сработало ..


edit: я нашел решение:

Я нашел, что было не так.Я написал код с CountDownTimer для повторения вместо использования опции повтора анимации.Я изменил свой XML на:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:startOffset="1000"
>
    <rotate
            android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
            android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0"
            android:pivotX="40%" android:pivotY="30%" android:duration="4000" />
     <set>
        <translate 
            android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
            android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="20%"
            android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" />
    </set>
 </set>

, и теперь он работает без этих миганий на экране.Также для падающей звезды я изменил XML на это:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
            android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
            android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="0%p"
            android:toYDelta="100%p" android:duration="2500" android:zAdjustment="bottom" />
     <set>
     <alpha 
        android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
        android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2500" />
    </set>
 </set>

и теперь он отлично работает!

1 Ответ

1 голос
/ 25 августа 2011

Я думаю, что imageView возвращается в исходное положение после завершения анимации. Вы можете попробовать добавить android:fillAfter="true|false" (попробуйте один из них) в XML анимации перевода. или попробуйте setFillAfter(boolean) на объекте анимации, если вы загружаете его, используя AnimationUtils.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...