目前,我有一个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));
但是,根本没有任何动画。
首先,我希望在通过removeAllViews
丢弃旧视图时,ViewAnimator
会为我执行幻灯片动画。当添加新的红色图表时,我也期望ViewAnimator
将在动画中执行幻灯片。
好像我错了。有没有我错过的步骤?
答案 0 :(得分:1)
在插入新视图时,永远删除所有旧视图,不会触发任何动画。 ViewAnimator
内应该至少有2个观看次数,以便观察幻灯片和幻灯片的效果。
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);