0

目前,我有一个ViewAnimator,用于将绿色图表放在顶部

    this.chartViewAnimator = (ViewAnimator)chartContainer.findViewById(R.id.chart_view_animator);        
    this.chartViewAnimator.setAnimateFirstView(true);
    Animation slideInLeft = AnimationUtils.loadAnimation(this.getActivity(), android.R.anim.slide_in_left);
    Animation slideOutRight = AnimationUtils.loadAnimation(this.getActivity(), android.R.anim.slide_out_right);
    int configMediumAnimTime = 2000;
    slideInLeft.setDuration(configMediumAnimTime);
    slideOutRight.setDuration(configMediumAnimTime);
    this.chartViewAnimator.setInAnimation(slideInLeft);
    this.chartViewAnimator.setOutAnimation(slideOutRight);

在此处输入图像描述

现在,我想更改顶部图表的持续时间。我期待着

  • 一个动画滑出旧的绿色图表,并永远丢弃它(不要保留在内存中)。
  • 在新的红色图表中滑动的动画。

在此处输入图像描述

我使用以下代码。

// Discard old chart. I'm expecting view animator will perform slide out animation.
chartViewAnimator.removeAllViews();
// I expect view animator will perform slide in animation.
chartViewAnimator.addView(graphicalView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

但是,根本没有任何动画。

首先,我希望通过 丢弃旧视图时removeAllViewsViewAnimator将为我执行滑出动画。当添加新的红色图表时,我还期望ViewAnimator在动画中执行幻灯片。

好像我错了。有没有我错过的步骤?

4

1 回答 1

1

在插入新视图时删除所有旧视图,不会触发任何动画。内至少要有2个view ViewAnimator,才能观察滑入滑出效果。

    chartViewAnimator.addView(graphicalView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    // Ensure there is always at least 2 views.
    if (chartViewAnimator.getChildCount() >= 3) {
        chartViewAnimator.removeViewAt(0);
    }
    chartViewAnimator.setDisplayedChild(chartViewAnimator.getChildCount() - 1);
于 2013-10-01T08:25:43.217 回答