欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 当一个View 平移后,使他原来的位置可用。

程序员文章站 2024-03-26 08:12:41
...

如下所示:

  ViewPropertyAnimator animate = mLinearLayout.animate();
                animate.translationY(height).setDuration(500);
                animate.setListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mLinearLayout.getLayoutParams();
                        params.topMargin = params.topMargin+ (-height);
                        mLinearLayout.setLayoutParams(params);
                        mLinearLayout.clearAnimation();
                    }
                });
                animate.start();

前两句 将一个 View 向下移动,时间为500,但是移动之后 其原来的位置不能使用,被遮挡。

查阅资料找到如下解决方法

 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mLinearLayout.getLayoutParams();
                        params.topMargin = params.topMargin+ (-(mLinearLayout.getMeasuredHeight()));
                        mLinearLayout.setLayoutParams(params);
                        mLinearLayout.clearAnimation();

例如上面 我们将view 向下移动了 height。那么监听动画完成之后 动态的设置这个view的位置即可,使用params.setMargins(), 这个方法可以设置位置,我采用的是 设置 marginTop ,因为我是向下移动,移动之后上面用不了了,然后让 view 设置 marginTop 即可,注意这里是 marginTop 是 负值。至于为什么是负值,自己试一下就知道了。