我想这动画的膨胀收缩恢复到初始尺寸的说明。 我试着用动画集添加两个动画,使得第二动画将第一动画之后开始,但没能得到它的工作。
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);
我真的很感谢所有帮助得到它的工作。 提前致谢
我有固定的“扩大”和“缩水”的动画,并增加持续时间两个。 你还应该添加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);
我会解释我选择了动画布局的变化的方式。
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);