0

我正在尝试让一个简单的视图在另一个视图后面滑动消失,我尝试过任何类型的动画,但没有一个成功..

这是我迄今为止尝试过的:

public void slideToTop(View view){
        TranslateAnimation animate = new TranslateAnimation(0,0,0,-view.getHeight());
        animate.setDuration(1000);
        view.startAnimation(animate);
        view.setVisibility(View.GONE);
    }

有和没有 ReverseInterpolator

public class ReverseInterpolator implements Interpolator {
        public float getInterpolation(float paramFloat) {
            return Math.abs(paramFloat -1f);
        }
    }

或缩放

public void scaling(View view) {
        ScaleAnimation animation = new ScaleAnimation(0,0,1,1.5f);
        animation.setDuration(1000);
        animation.setFillAfter(true);
        view.startAnimation(animation);
    }

或使用新的 api

editView.animate().translationY(-editView.getHeight()).withLayer();

关于如何实现这一目标的任何帮助?

我的布局是这样的:

<ScrollView>
  <LinearLayout>
    <LinearLayout>
      <TextView/>
      <View/> <!-- This should "disappear" sliding up behind the other one -->
    </LinearLayout>
    <!-- more of the previous -->
    <LinearLayout>
      <TextView/>
      <View/>
    </LinearLayout>
  </LinearLayout>
</ScrollView>

有什么帮助吗?谢谢!

4

1 回答 1

3

如果你想要视图 B 消失在视图 A 后面的效果,你需要在 A 之前绘制 B:

<RelativeLayout>
   <ViewB />
   <ViewA above="ViewB"/>
</RelativeLayout>

然后移动 ViewB。我对以下代码做了同样的事情,它将 viewToMove 向上移动它自己的高度:

public void collapse() {
        View viewToMove= mainView.findViewById(R.id.viewToMove);
        int pixelsToMove= viewToMove.getHeight() * -1;
        slots.animate().yBy(pixelsToMove).setDuration(ANIMATION_DURATION_MS);
    }

打电话时要小心,getHeight()您可能需要 aViewTreeObserver来获得正确的值,因为大多数时候在绘制视图之前getHeight()只会返回 0

于 2013-06-24T14:49:09.497 回答