使用动画更改Android TextView的可见性后,它会闪烁

4

我在 ConstraintLayout 中有一些视图。我使用了动画来显示和隐藏这些视图。当视图处于 GONE 状态时,它会闪烁一秒钟,然后变为可见状态,接着再次消失。

     view.animate()
    .alpha(0.0f)
    .setDuration(300)
    .setListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            view.setVisibility(View.GONE);
        }
    });

1
https://dev59.com/8-o6XIcBkEYKwwoYJA7p - IntelliJ Amiya
2个回答

4
我尝试了您发布的代码,似乎完全正常运行,除非要对您尝试动画化的视图的父级应用animateLayoutChanges。如果您在布局 XML 中启用了它,请将其关闭并再次尝试。

3
仅对此处答案进行解释,因为我遇到了同样的问题。在使用animateLayoutChanges与animation onAnimationEnd联合使用时,切换View可见性会导致两个动画同时运行。代码首先将alpha设置为零,视图第一次消失。然后,当在onAnimationEnd代码中将视图设置为GONE时,第二个动画将从布局的animateLayoutChanges设置中运行,将alpha重置为1并使视图再次淡出。 - CodeSmith

0
这是因为使用了AnimatorListenerAdapter,请将其替换为withEndAction:
        view.animate()
            .alpha(0.0f)
            .setDuration(300)
            .withEndAction(new Runnable() {
                @Override
                public void run() {
                    view.setVisibility(View.GONE);
                }
            });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接