2017-02-19 70 views
0

在询问之前,我浏览了几天,但找不到任何东西来完全回答我的问题。我有一个框架内有两个片段。当我从一个片段切换到另一个片段时,当帧中存在另一个片段时,它会滞后。我尝试在转场时隐藏,但看起来不太好。在Android上从一个片段到另一个片段时的动画滞后

MainActivity(帧):

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ft = getSupportFragmentManager().beginTransaction(); 
    HomePage homeFrag = new HomePage(); //create game fragment 
    ft.add(R.id.activity_main, homeFrag, "Home"); 
    ft.show(homeFrag); 
    ft.commit(); 

片段1:

startNewGame.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Thread thread = new Thread() 
      { 
       @Override 
       public void run() 
       { 
        //ft.hide(frag); 
        ft.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_right, R.anim.exit_to_left); 
        ft.replace(R.id.activity_main, new PlayGame(), "PlayGame"); 
        ft.addToBackStack("Home"); 
        ft.commit(); 
       } 
      }; 
      thread.run(); 

     } 
    }); 

片段2:

public android.view.View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.play_game, container, false); 
    v.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View view, int i, KeyEvent keyEvent) { 
      if(keyEvent.getKeyCode() == keyEvent.KEYCODE_BACK) 
      { 
       ft = getFragmentManager().beginTransaction(); 
       getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
       return true; 
      } else 
      { 
       return false; 
      } 
     } 
    }); 
    return v; 

谢谢您的帮助!

+0

您是否正在使用较慢的电脑来运行您的模拟器?并在仿真器上测试它?或低内存设备,这可能是问题 – user7568042

+0

我有一个GTX970,但我会尝试加强一个新的模拟器,并尝试。谢谢 :) –

回答

0

感谢用户7568042我不认为我需要加强我的模拟器,因为它在GTX-970上运行得很快,但是在加强我的模拟器之后,转换顺利并且固定。如果其他人有这个问题,你的RAM和更改为更新的手机,如Nexus 6P。这对我有效。

相关问题