在 Android 中连续淡入淡出两个视图
Crossfading two Views continuously in Android
我已经使用 class Animation
构建了连续淡入淡出两个图像的 Alpha 动画。
每张图片淡入淡出。当动画结束时,它会重置并重新开始:
anim.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
arg0.reset();
arg0.startNow();
}
});
另一张图片使用了完全相同的动画,但它的启动有延迟。因此,image1淡入,不断显示,然后慢慢淡出,image2淡入,不断显示,然后慢慢淡出,image1再次淡入,依此类推。
anim.setStartTime(AnimationUtils.currentAnimationTimeMillis() + DELAY);
view.setAnimation(anim);
如果应用在不受用户干扰的情况下运行,它似乎会慢慢失去同步。当应用程序暂停然后恢复时,动画完全不同步。我认为原因是因为它创建了没有同步的单独线程。
有没有一种简单的方法可以同步完成它?
动画XML看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1000"
android:startOffset="0"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0"
android:duration="2000"
android:startOffset="2000"/>
</set>
当应用程序在前台运行时,问题是启动动画的处理时间使其不同步。
我建议您使用 ViewFlipper. 您可能需要在 activity 或片段中的 onResume 和 onPause 中开始和停止翻转。
<ViewFlipper
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:auto_start="true"
android:flipInterval="2000">
// YourViewsHere
</ViewFlipper>
您可以像这样设置动画;
flipper.SetInAnimation(this, Android.Resource.Animation.FadeIn);
flipper.SetOutAnimation(this, Android.Resource.Animation.FadeOut);
我已经使用 class Animation
构建了连续淡入淡出两个图像的 Alpha 动画。
每张图片淡入淡出。当动画结束时,它会重置并重新开始:
anim.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
arg0.reset();
arg0.startNow();
}
});
另一张图片使用了完全相同的动画,但它的启动有延迟。因此,image1淡入,不断显示,然后慢慢淡出,image2淡入,不断显示,然后慢慢淡出,image1再次淡入,依此类推。
anim.setStartTime(AnimationUtils.currentAnimationTimeMillis() + DELAY);
view.setAnimation(anim);
如果应用在不受用户干扰的情况下运行,它似乎会慢慢失去同步。当应用程序暂停然后恢复时,动画完全不同步。我认为原因是因为它创建了没有同步的单独线程。
有没有一种简单的方法可以同步完成它?
动画XML看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1000"
android:startOffset="0"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0"
android:duration="2000"
android:startOffset="2000"/>
</set>
当应用程序在前台运行时,问题是启动动画的处理时间使其不同步。
我建议您使用 ViewFlipper. 您可能需要在 activity 或片段中的 onResume 和 onPause 中开始和停止翻转。
<ViewFlipper
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:auto_start="true"
android:flipInterval="2000">
// YourViewsHere
</ViewFlipper>
您可以像这样设置动画;
flipper.SetInAnimation(this, Android.Resource.Animation.FadeIn);
flipper.SetOutAnimation(this, Android.Resource.Animation.FadeOut);