我正在尝试在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>
这是我的动画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.setAnimationListener(本);
并添加到onAnimationEnd: image.setVisibility(View.GONE);
但它没有帮助我。 有谁知道我该怎么做才能解决它?
-
我写过:翻译 android:fromXDelta =“100%p”android:toXDelta =“ - 100%p”android:fromYDelta =“0%p” android:toYDelta =“100%p”android:duration =“500”
它不起作用..
编辑:我找到了解决方案:
我发现了什么问题。我用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>
现在它完美无缺!
答案 0 :(得分:1)
我认为在动画完成后imageView会回到原来的位置。您可以尝试在翻译动画的xml中使用android:fillAfter="true|false"
(尝试其中一个)。如果您使用setFillAfter(boolean)
加载动画对象,请尝试AnimationUtils
。