Java 暂停动画无法正常工作

Java 暂停动画无法正常工作,java,android,animation,Java,Android,Animation,我正在做一个游戏。这一切都很好,我唯一需要的是我的动画暂停时,我按下主页或开/关按钮在我的手机上。就我的日志记录正确而言,暂停脚本(如找到的)运行良好。它不断增加时间并将其应用于动画。然而,当我恢复游戏时,动画都会在屏幕左侧恢复,而不是我暂停游戏时它原来的位置。这是我的代码。我真的希望有人能帮助我 public class GameView extends Activity{ ImageView peanut; TranslateAnim movePeanut; Anim

我正在做一个游戏。这一切都很好,我唯一需要的是我的动画暂停时,我按下主页或开/关按钮在我的手机上。就我的日志记录正确而言,暂停脚本(如找到的)运行良好。它不断增加时间并将其应用于动画。然而,当我恢复游戏时,动画都会在屏幕左侧恢复,而不是我暂停游戏时它原来的位置。这是我的代码。我真的希望有人能帮助我

public class GameView extends Activity{
    ImageView peanut;
    TranslateAnim movePeanut;
    AnimationSet animSet = new AnimationSet(true);



    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gameviewlayout);
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;

        movePeanut = new TranslateAnim(width,0,0,0);
        movePeanut.setDuration(5000);
        movePeanut.setRepeatCount(-1);
        movePeanut.setRepeatMode(Animation.REVERSE);

        animSet.addAnimation(movePeanut);
        animSet.setFillAfter(true);
        peanut = (ImageView) findViewById(R.id.imgview1);
        peanut.startAnimation(animSet);


    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();


    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        movePeanut.resume();



    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        movePeanut.pause();
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();

    }
    public void finish (){
        Intent intent = new Intent (GameView.this, MainActivity.class);
        startActivity(intent);
    }

    public class TranslateAnim extends TranslateAnimation{

        public TranslateAnim(float fromXDelta, float toXDelta, float fromYDelta,
                float toYDelta) {
            super(fromXDelta, toXDelta, fromYDelta, toYDelta);
            // TODO Auto-generated constructor stub
        }

        private long mElapsedAtPause=0;
        private boolean mPaused=false;

        @Override
        public boolean getTransformation(long currentTime, Transformation outTransformation) {
            if(mPaused && mElapsedAtPause==0) {
                mElapsedAtPause=currentTime-getStartTime();
            }
            if(mPaused)
                setStartTime(currentTime-mElapsedAtPause);

            boolean returnValue = super.getTransformation(currentTime, outTransformation);


            return returnValue;
        }

        public void pause() {
            mElapsedAtPause=0;
            mPaused=true;
        }

        public void resume() {
            mPaused=false;
        }
    }
}

这里有一个答案建议了暂停和恢复TranslateImation的解决方案:是的,正如您所看到的,我实现了非常相同的代码。我想这不是问题所在。我只是希望有人能帮助我这里有一个想法可以尝试:在onPause中保存视图的当前坐标和动画上剩余的时间,让动画在应用程序暂停时完成,然后在onResume中,将视图放置在这些坐标处,并使用保存的时间长度启动另一个动画。感谢您的回复。我目前拥有的代码与。。这是如此令人沮丧,我花了100多个小时来修复它,它从来没有工作。谢谢你的帮助。