Android show hide hideLayout

时间:2016-06-03 23:59:12

标签: android animation

使用此应用程序,我正试图在LinearLayout上管理显示/隐藏动画。

我遇到的问题是,在切换可见性时,它似乎第二次隐藏了任何孩子......

为了让我的故事更加清晰,请点击这里:

  • on start - hidden
  • 第一次点击 - 显示带孩子的线性布局(textview)
  • 第二次点击 - 再次隐藏线性布局
  • 第3次点击 - 显示线性布局,但没有儿童(textview)

enter image description here

Layoutfile:

        <TextView
            android:id="@+id/tv_lecture"
            style="@style/Text.Primary.Light"
            android:singleLine="true" />

        <LinearLayout
            android:visibility="gone"
            android:id="@+id/grades_container"
            style="@style/Container.Vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="10"/>
        </LinearLayout>

代码:

private void animate(final LinearLayout gradesContainer) {
    if (gradesContainer.getVisibility() == View.GONE) {
        gradesContainer.animate()
                .translationY(gradesContainer.getHeight())
                .alpha(1.0f)
                .setListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationStart(Animator animation) {
                        super.onAnimationStart(animation);
                        gradesContainer.setVisibility(View.VISIBLE);
                        gradesContainer.setAlpha(0.0f);
                    }
                });
    }
    else {
        gradesContainer.animate()
                .translationY(0)
                .alpha(0.0f)
                .setListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        super.onAnimationEnd(animation);
                        gradesContainer.setVisibility(View.GONE);
                    }
                });
    }
}

讲座TextView单击将触发方法:animate()

那么这个问题到底是什么?无法弄清楚这就是为什么我会问你们。谢谢!

1 个答案:

答案 0 :(得分:1)

如果您的目标只是简单的动画。您可以继续前进并在xml中使用animateLayoutChanges

干杯! :)