因此,我的布局中有一个 ImageView,当用户在后者上滑动时,我想将其向右或向左滑动。我使用 TranslateAnimation 来翻译 ImageView,如下图所示。
ImageView logoFocus = (ImageView) findViewById(R.id.logoFocus);
Animation animSurprise2Movement = new TranslateAnimation(logoFocus.getLeft(), logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getTop());
animSurprise2Movement.setDuration(1000);
animSurprise2Movement.setFillAfter(true);
animSurprise2Movement.setFillEnabled(true);
logoFocus.startAnimation(animSurprise2Movement);
我已将此代码放在我的 Swipe Right 部分中,相同的代码但使用 getLeft()-150 作为 Swipe Left 部分。当我第一次滑动时,它按预期工作,但是当我向另一个方向滑动时,ImageView 会回到它的原始位置,然后向另一个方向滑动,而不是只滑动到原始位置。
我已经尝试在已设置为动画的 AnimationListener 的 onAnimationEnd 方法中添加以下内容,但徒劳无功。
MarginLayoutParams params = (MarginLayoutParams) logoFocus.getLayoutParams();
params.setMargins(logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getRight(), logoFocus.getBottom());
logoFocus.setLayoutParams(params);
我也用相同的方法尝试了以下方法,但都没有按预期工作。
((RelativeLayout.LayoutParams) logoFocus.getLayoutParams()).leftMargin += 150;
logoFocus.requestLayout();
有人能帮帮我吗?即使使用了 setFillAfter(true) 和 setFillEnabled(true),动画之后的位置似乎也没有改变。有没有使用 TranslateAnimation 的替代方法?
感谢您为我提供的任何帮助。:)