TextViews 在 Android 4 上仅动画一次

Posted

技术标签:

【中文标题】TextViews 在 Android 4 上仅动画一次【英文标题】:TextViews animate only once on Android 4 【发布时间】:2013-01-06 10:40:45 【问题描述】:

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

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

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

谢谢!

【问题讨论】:

我的淡入动画在 4.2.1 中再次正常工作。我不会再花时间尝试在 4.0.x 上解决此问题,因为我找到了解决方法。 【参考方案1】:

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

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

【讨论】:

是的,我同意。我动画的布局是我上面代码sn-p中的viewGroup,布局动画从最后一行开始:animController.start(); 我可以补充一点,我没有在布局xml中附加布局动画。正如 sn-p 所描述的,它在 java 代码中处理。

以上是关于TextViews 在 Android 4 上仅动画一次的主要内容,如果未能解决你的问题,请参考以下文章

Android:是不是可以在 TextViews 9patch 背景之外设置 drawableLeft?

让Android主屏幕小部件在textviews之间交替的最佳方式是啥?

如何在android中创建可变数量的textviews

Display.getSupportedModes() 在 4K Android TV 上仅返回 1080p 显示模式

是否可以使用 android:DrawableRight 在 Buttons 和 TextViews 中使用 VectorDrawable?

Android上的双文本TextViews [重复]