我使用xml定义的动画将视图滑出屏幕。问题是,一旦动画完成,它就会重置到其原始位置。我需要知道怎么解决这个问题。下面是xml:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="500"/></set>
下面是我用来命名它的Java:
homeScrn = (View)findViewById(R.id.homescreen);
slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
//Set Click Listeners For Menu
btnHelp.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
LayoutInflater.from(getApplicationContext()).inflate(R.layout.help, (ViewGroup)findViewById(R.id.subpage), true);
homeScrn.startAnimation(slideLeftOut);
}
});
所以基本上发生的是我在一个视图下面膨胀一个视图。然后我在左上角的视图中设置动画。一旦它离开屏幕,动画结束,它就会重新设置它的位置。
发布于 2010-10-07 23:48:50
动画效果与预期一致。仅仅因为你设置了动画并不意味着你真的移动了它。动画仅影响动画本身的绘制像素,而不影响小部件的配置。
您需要添加一个AnimationListener
,并在onAnimationEnd()
方法中执行一些使您的移动成为永久性的操作(例如,将顶部的视图从其父视图中移除,将顶部的视图标记为具有可见性GONE
)。
发布于 2011-07-26 17:12:07
我的回复可能有点晚了,但我有解决方案:
只需在您的xml中添加android:fillAfter="true"
发布于 2012-12-06 00:10:40
您可以使用
fillAfter=true
fillEnabled=true
你的视图不会重置到原来的位置,但是如果你的视图中有一些按钮或其他东西,它们的位置不会改变。
您必须使用ObjectAnimator
,它在API11级别上工作。它会自动改变视图位置,
下面是示例
ObjectAnimator objectAnimator= ObjectAnimator.ofFloat(mContent_container, "translationX", startX, endX);
objectAnimator.setDuration(1000);
objectAnimator.start();
感谢JUL的answer
如果您的应用程序未找到object animator
,请从Project -> properties -> Android
更改API级别,然后更改import android.animation.ObjectAnimator;
问候海克
https://stackoverflow.com/questions/3882826
复制相似问题