2014-12-02 15 views
2


我有一個包含片段的主要活動。這個片段可以通過選擇一個菜單項來改變。
當在第一個片段上時,單擊菜單按鈕。顯示側欄。選擇菜單項後,片段會改變。
單擊此片段上的菜單項時,動畫偵聽器不會立即調用。在首先調用腳本之前,您必須先向某個方向滾動。 菜單項在主要活動中,所以它應該介意是否會有不同的片段,對吧?片段變化後未調用動畫收聽者

slideIn = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_in); 
slideIn.setAnimationListener(new AnimationListener() { 


@Override 
     public void onAnimationStart(Animation animation) { 
      isAnimating = true; 
     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 0.0f); 
      animation.setDuration((long) 0.1f); 
      menuView.startAnimation(animation); 
      ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) menuView.getLayoutParams(); 
      p.setMargins(0, 0, 0, 0); 
      menuView.setLayoutParams(p); 
      isAnimating = false; 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
    }); 

menuView.startAnimation(slideIn); 

,這將是該片段的變化:

trans = getSupportFragmentManager().beginTransaction(); 
          trans.remove((Fragment) Globals.getInstance().getCurrentFragment()); 
          trans.add(R.id.realtabcontent, fragmentName, "tag"); 
          trans.commit(); 

等不同的片段,動畫是當我開始滾動。以上代碼全部在主要活動

+0

你'TranslateAnimation(浮動fromXDelta,浮toXDelta,浮fromYDelta,浮動toYDelta)''是新TranslateAnimation(0.0F,0.0F,0.0F,0.0F);' 。所以開始和結束的X,Y座標是相同的。所以沒有翻譯要顯示。你在幻燈片後要做什麼動畫? – 2014-12-02 09:01:45

+0

動畫結束後,菜單的位置將重置爲開始位置,您可以在設置新位置之前看到此情況。 onEnd中的翻譯可確保您不會看到閃爍。 – Hespen 2014-12-02 09:13:37

回答