Android Studio打地鼠游戏重启后Mole动画失效,求正确跳转方法
解决打地鼠游戏重启后动画失效问题
1. 修正页面跳转逻辑,销毁旧Game_Activity实例
当前跳转至Game_Over_Activity时,原Game_Activity仍留存于任务栈中,导致“再玩一次”时可能复用旧实例而非重新初始化。修改跳转代码,启动新页面后销毁当前Game_Activity:
public void change_to_game_over_activity() { Intent intent = new Intent(Game_Activity.this, Game_Over_Activity.class); startActivity(intent); finish(); // 销毁当前页面,避免栈中残留旧实例 }
2. 实现“再玩一次”的正确跳转逻辑
在Game_Over_Activity的按钮点击事件中,启动新的Game_Activity并销毁当前页面:
// 假设“再玩一次”按钮的点击处理方法 public void restartGame(View view) { Intent intent = new Intent(Game_Over_Activity.this, Game_Activity.class); startActivity(intent); finish(); // 清理当前页面,避免栈冗余 }
3. 调整动画的生命周期绑定逻辑
确保动画能在Activity重启时重新初始化并启动:
- 将动画的资源加载、视图绑定放在
onCreate()中,保证每次创建页面时都能重新初始化:
private Animation moleUpAnim; private ImageView moleImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); moleImageView = findViewById(R.id.mole); moleUpAnim = AnimationUtils.loadAnimation(this, R.anim.mole_up); // 可添加动画结束监听,处理地鼠下落逻辑 moleUpAnim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { // 此处启动地鼠向下的动画 } @Override public void onAnimationRepeat(Animation animation) {} }); }
- 将动画启动逻辑放在
onResume()中,而非仅在onCreate()执行,确保页面恢复时动画能重启:
@Override protected void onResume() { super.onResume(); startMoleAnimation(); } // 封装动画启动方法,方便调用 private void startMoleAnimation() { // 可添加随机延迟等游戏逻辑后启动动画 moleImageView.startAnimation(moleUpAnim); }
4. 销毁页面时清理动画资源
在Game_Activity的onDestroy()中停止动画并释放资源,避免内存泄漏影响新实例:
@Override protected void onDestroy() { super.onDestroy(); if (moleUpAnim != null) { moleUpAnim.cancel(); moleUpAnim = null; } if (moleImageView != null) { moleImageView.clearAnimation(); } }
内容的提问来源于stack exchange,提问作者Gensik Rubio
相关产品推荐
相关产品推荐

