1

我有一个包含多个按钮和两个文本视图的布局(RelativeLayout)。对于每次信息更改,我会淡出所有视图,更新信息并淡入视图。我为此使用layoutanimations。TextViews在Android 4上只动画一次

很奇怪的是,文本视图只能动画一次。他们一次正确地淡入淡出,然后不再生气。另一方面,按钮继续动画就好了。

另一个可能很奇怪的事情是,我没有在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中是否有任何动画更改会打破向后兼容性?

谢谢!

+0

我的淡入动画在4.2.1中再次正常工作。由于我有一个解决方法,我不会花更多时间试图解决这个问题。 – Snakebunk

回答

2

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

动画将而不是当您更新您的内容时通常会播放。您需要使用View.startAnimation(Animation)View.clearAnimation()以确保每次更新内容时播放动画。

+0

是的,我同意。我在上面的代码片段中设置了viewGroup的布局,并且布局动画从最后一行开始:animController.start(); – Snakebunk

+0

我可以补充一点,我不在布局xml中附加布局动画。正如代码片段所描述的那样,它在Java代码中处理。 – Snakebunk