TextViews仅在Android 4上动画一次

时间:2013-01-06 10:40:46

标签: android animation textview backwards-compatibility layout-animation

我有一个布局(RelativeLayout),有许多按钮和两个文本视图。对于每次信息更改,我淡出所有视图,更新信息,然后淡入视图。我为此使用了layoutanimations。

非常奇怪的是文本视图只能动画一次。它们一次正确地淡入淡出,然后就不再动画了。另一方面,按钮继续制作动画。

另一个可能奇怪的事情是我在android 2.3.x上没有遇到这个问题,但是在android 4.0.x上。

我可以通过在淡入后清除文本视图上的动画来解决这个问题,但它看起来并不那么好,因为它们仍然没有消失。

我尝试在淡入之前清除文本视图上的动画,但它没有帮助。我还尝试了清单中targetSdkVersion属性的不同设置,但没有任何结果。

动画淡出(淡出相似):

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="750" 
    android:fillAfter="true" 
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" 
/>

动画代码(每次布局淡入时都会运行):

// Set listener.
viewGroup.setLayoutAnimationListener(listener);

// Load animation.
final Animation fadeIn = AnimationUtils.loadAnimation(context, R.anim.fade_in);

// Create and start animation controller.
final LayoutAnimationController animController = new LayoutAnimationController(fadeIn);
viewGroup.setLayoutAnimation(animController);
animController.setAnimation(fadeIn);
animController.setDelay(FADE_IN_DELAY + extraDelay);
animController.setOrder(LayoutAnimationController.ORDER_REVERSE);
animController.start();

有没有人有任何想法? Buttons和TextViews之间是否存在某种动画特定的区别? Android 4中是否有任何动画更改会破坏向后兼容性?

谢谢!

1 个答案:

答案 0 :(得分:2)

布局动画仅在视图组布置其子项时发生 - 根据[LayoutAnimationController][1]文档为每个孩子播放相同的动画,但具有不同的开始时间 - 它通常用于例如ListViewGridView可为项目的入口设置动画。

更新内容时,通常会播放动画。您需要使用View.startAnimation(Animation)View.clearAnimation()来确保每次更新内容时都会播放动画。