Android动画定位问题
我尝试在android中制作两个翻译动画,但遇到了问题:Android动画定位问题,android,xml,animation,Android,Xml,Animation,我尝试在android中制作两个翻译动画,但遇到了问题: 我试图显示一个图像,从一侧进入,从另一侧退出,并重复几分钟。我可以看到一个移动的图像,但每次动画开始时,我都会看到一毫秒的图像闪烁 这是我的布局xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientat
<?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都会调用它:
图像。startAnimation(动画)
我还试着听动画:
anim.setAnimationListener(此)
并添加到onAnimationEnd:
image.setVisibility(View.GONE)
但这对我没有帮助。
有人知道我能做些什么来修复它吗
--
编辑:我找到了解决方案: 我发现了问题所在。我编写了一个带有倒计时的代码,用于重复,而不是使用动画的repeat选项。我已将我的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>
现在它工作得很好 我认为在动画完成后,imageView会回到其原始位置。您可以尝试在翻译动画的xml中使用android:fillAfter=“true | false”(试试其中一个)。或者,如果正在使用
AnimationUtils
加载动画对象,请在动画对象上尝试setFillAfter(布尔)
,确定我找到了解决方案。我尝试编写自己的循环显示,而不是使用android的代码。我已经删除了计时器,并在动画中添加了以下代码:android:repeatCount=“infinite”android:repeatMode=“restart”android:fillAfter=“false”效果很好。我发现了另一个问题——AnimationRepeat方法从未被调用。我认为这是android平台的一个bug。你是如何加载动画和设置动画监听器的?anim=AnimationUtils.loadAnimation(这个,R.anim.move);anim.setAnimationListener(此);