【发布时间】:2012-08-08 10:54:45
【问题描述】:
我正在尝试在 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);
我也试过听动画: anim.setAnimationListener(this);
并添加到 onAnimationEnd: image.setVisibility(View.GONE);
但这对我没有帮助。 有谁知道我可以做些什么来解决它?
--
- 我正在尝试显示“流星”图像 - 我创建了一个小 png 文件 (30px*30px) 并尝试将其定位在屏幕的一个边缘并让它移动到另一个边缘并消失.但是我在动画 XML 中编写的每个代码都没有这样做! 谁能帮我正确地编写动画?
我写过:翻译 安卓:fromXDelta="100%p" 安卓:toXDelta="-100%p" 安卓: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>
现在它完美运行了!
【问题讨论】: