我正在尝试为放大和缩小回初始大小的视图设置动画。我尝试使用动画集添加两个动画,以便第二个动画将在第一个动画后开始,但无法使其正常工作。
AnimationSet expandAndShrink = new AnimationSet(true);
ScaleAnimation expand = new ScaleAnimation(
1f, 1.5f,
1f, 1.5f,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0);
ScaleAnimation shrink = new ScaleAnimation(
1.5f, 1f,
1.5f, 1f,
Animation.RELATIVE_TO_PARENT, 1f,
Animation.RELATIVE_TO_PARENT, 1f);
expandAndShrink.addAnimation(expand);
expandAndShrink.addAnimation(shrink)
expandAndShrink.setFillAfter(true);
expandAndShrink.setDuration(1000);
expandAndShrink.setInterpolator(new AccelerateInterpolator(1.0f));
view.bringToFront();
view.startAnimation(expandAndShrink);
我非常感谢任何有助于它运作的帮助。提前致谢
答案 0 :(得分:6)
我修复了“展开”和“缩小”动画,并为两者增加了持续时间。你还应该添加shrink.setStartOffset(1000);所以第二个动画稍后开始
AnimationSet expandAndShrink = new AnimationSet(true);
ScaleAnimation expand = new ScaleAnimation(
1f, 1.5f,
1f, 1.5f,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0);
expand.setDuration(1000);
ScaleAnimation shrink = new ScaleAnimation(
1.5f, 1f,
1.5f, 1f,
Animation.RELATIVE_TO_PARENT, 0f,
Animation.RELATIVE_TO_PARENT, 0f);
shrink.setStartOffset(1000);
shrink.setDuration(1000);
expandAndShrink.addAnimation(expand);
expandAndShrink.addAnimation(shrink);
expandAndShrink.setFillAfter(true);
expandAndShrink.setInterpolator(new AccelerateInterpolator(1.0f));
view.startAnimation(expandAndShrink);
答案 1 :(得分:0)
我将说明选择动画布局更改的方式。
Android有一个名为ScaleAnimation
的特殊动画类,我们可以在其中平滑地扩展或折叠视图。
通过对角扩展显示视图:
ScaleAnimation expanding = new ScaleAnimation(
0, 1.0f,
0, 1.0f,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0);
expanding.setDuration(250);
view.startAnimation(expanding)
使用的构造函数为:
ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
因此您可以相应地更改值。
例如,以下示例将水平显示视图动画
ScaleAnimation expanding = new ScaleAnimation(
0, 1.1f,
1f, 1f,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0);
expanding.setDuration(250);
您可以根据需要更改fromX
,toX
,fromY
和toY
。
例如,如果显示了视图,而您只需要展开它,则将fromX
和fromY
放在1.0f
上,将toX
,toY
放在需要。
现在,使用相同的类,您可以通过将视图稍微扩大一点,然后将其缩小到原始大小,来创建更酷的效果来显示视图。为此,将使用AnimationSet
。这样会产生一种泡沫效果。
下面的示例用于创建气泡效果以显示视图:
AnimationSet expandThenShrink = new AnimationSet(true);
ScaleAnimation expanding = new ScaleAnimation(
0, 1.1f,
0, 1.1f,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0);
expanding.setDuration(250);
ScaleAnimation shrinking = new ScaleAnimation(
1.1f, 1f,
1.1f, 1f,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0);
shrinking.setStartOffset(250);
shrinking.setDuration(120);
expandThenShrink.addAnimation(expanding);
expandThenShrink.addAnimation(shrinking);
expandThenShrink.setFillAfter(true);
expandThenShrink.setInterpolator(new AccelerateInterpolator(1.0f));
view.startAnimation(expandThenShrink);