安卓:如何扩大和斜收缩的看法?(Android: How to expand and shrink

2019-07-29 03:31发布

我想这动画的膨胀收缩恢复到初始尺寸的说明。 我试着用动画集添加两个动画,使得第二动画将第一动画之后开始,但没能得到它的工作。

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);

我真的很感谢所有帮助得到它的工作。 提前致谢

Answer 1:

我有固定的“扩大”和“缩水”的动画,并增加持续时间两个。 你还应该添加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);


Answer 2:

我会解释我选择了动画布局的变化的方式。

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);

你可以改变fromXtoXfromYtoY根据需要。

例如,如果图所示,你必须只是展开它,把fromXfromY1.0f ,和toXtoY根据需要。

现在,使用相同的类,你可以创建一个显示视图通过扩展视图一点点额外的,然后将其缩小到原来的大小更凉爽的效果。 为此, 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);


文章来源: Android: How to expand and shrink a view diagonally?