2017-02-19 69 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。這對我有效。

相關問題