Я пытаюсь сделать две анимации перевода в Android, и у меня возникают проблемы с ними:
- Я пытаюсь отобразить изображение, входящее с одной стороны и выходящее с другой, и сделатьнесколько раз в течение нескольких минут.Я вижу движение, но каждый раз, когда начинается анимация - я вижу мигание изображения в течение миллисекунды.
Это мой макет 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);
Но это не помогло мне.Кто-нибудь знает, что я могу сделать, чтобы это исправить?
-
- Я пытаюсь показать изображение "падающей звезды" - я создал небольшой файл 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>
и теперь он отлично работает!