2015-11-25 57 views
2

我要禁用所有發動我的Android應用程序的新活動時發生的動畫(所有活動)。有沒有辦法一勞永逸地實現這一目標?或者我應該去每一個活動,並使用Intent.FLAG_ACTIVITY_NO_ANIMATION或overridePendingTransition或兩者?禁用所有動畫在Android應用

+1

。然後請嘗試關閉開發人員選項中的Android動畫。如果這沒有幫助,請按照http://stackoverflow.com/questions/6972295/switching-activities-without-animation – Sam

回答

2

,如果你願意,你可以使用風格:

<style name="noAnimTheme" parent="android:Theme"> 
    <item name="android:windowAnimationStyle">@null</item> 
</style> 

,並將它們設置爲您的活動:

<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme"> 
    </activity> 

讓我知道,如果那你是什麼意思?

感謝@Santosh https://stackoverflow.com/a/9312957/3180983

當我建我的應用程序,我只用一個活動。在活動有4個自定義視圖。每個自定義視圖代表另一種「活動」它不是一個真正的活動...林少自定義視圖打左右各一的另一個窗口...

這裏是動畫(***如果你不想要的代碼動畫SKIP此代碼下一goToRegistrationPage()樓下):

//This code change the view so that the register form will appear. instead of changing activity with animation. 
public void goToRegistrationPage() 
    { 
     Animation animationRightX1 = AnimationUtils.loadAnimation(this, R.anim.translate_right_x1); 
     //animationRightX1. 
     Animation animationRightX2 = AnimationUtils.loadAnimation(this, R.anim.translate_right_x2); 
     Animation animationRightX3 = AnimationUtils.loadAnimation(this, R.anim.translate_right_x3); 

     final int width = this.getWindowManager().getDefaultDisplay().getWidth(); 
     layout.MainView.setVisibility(View.GONE); 
     layout.MainLogin.startAnimation(animationRightX1); 
     layout.MainRegister.startAnimation(animationRightX1); 
     animationRightX1.setAnimationListener(new Animation.AnimationListener() { 
      @Override 
      public void onAnimationStart(Animation animation) { 

      } 
      @Override 
      public void onAnimationEnd(Animation animation) { 
       layout.layoutScroll.scrollTo((width*2), 0); 
       layout.MainView.setVisibility(View.VISIBLE); 
      } 
      @Override 
      public void onAnimationRepeat(Animation animation) { 

      } 
     }); 
    } 

這裏是沒有動畫的代碼(這是你所需要的):

//This code change the view so that the register form will appear. instead of changing activity 
//Go to the registration form from the main view. 
    public void goToRegistrationPageFromMainView() 
     { 
      final int width = this.getWindowManager().getDefaultDisplay().getWidth(); 
      layout.layoutScroll.scrollTo((width*2), 0); // its width*2 because there is the "some other view" so it need to go 2 times width to the right side... 
     } 

所以基本上你做什麼,在這裏滾動寬度爲像素的窗口。

layoutscroll是在圖片中的粉紅色。

layout是我創建的類,用於存儲所有佈局...其個人喜好,你可以做this.layoutscroll...

How it looks like

  • MAINVIEW,另一種觀點,登記表是擴展的LinearLayout ......你可以附加到他們中的每一個線性佈局吹氣XML文件自定義視圖...
    • 當然啦,如果你想調試你的問題,你做滾動視圖unscrollable ....
+0

但我必須爲每個活動單獨做這件事嗎? – bighi

+0

當我做項目,我不會改變我的活動做一個活動,我想每一次「更改活動」我做一個自定義的視圖中消失以及其它會出現... –

+1

所以我們可以說我有2個自定義視圖我我是否玩過隱形眼鏡。不僅如此,你可以不用動畫,如果你用動畫做這將是更快,自定義動畫... –