2012-10-17 40 views
2

的活動我有以下代碼:開始在那裏用戶離開它

public class SplashScreenActivity extends Activity { 

private boolean animated ; 

private Handler handler1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState) 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    if (!isPreviouslyLoggedIn()) { 
     setContentView(R.layout.splash); 

     final TextView revolution=(TextView) findViewById(R.id.textView1); 
     final Button login=(Button) findViewById(R.id.loginButton); 
     final Button signUp=(Button) findViewById(R.id.signUpButton); 

     login.setOnClickListener(loginListener); 
     signUp.setOnClickListener(signUpListener); 

     if (!animated) { 
      animated = true; 
      revolution.setVisibility(View.INVISIBLE); 
      login.setVisibility(View.INVISIBLE); 
      signUp.setVisibility(View.INVISIBLE); 

      ImageView image = (ImageView) findViewById(R.id.image); 
      TranslateAnimation slide = new TranslateAnimation(0, 0, 100, 0); 
      slide.setDuration(1000); 
      image.startAnimation(slide); 

      handler1 = new Handler(); 

      handler1.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        revolution.setVisibility(View.VISIBLE); 
        login.setVisibility(View.VISIBLE); 
        signUp.setVisibility(View.VISIBLE); 
       } 
      },1200); 
     } 
    } 

    else { 
     setContentView(R.layout.home); 
     Intent intent = new Intent(getApplicationContext(), PickUpActivity.class); 
     startActivity(intent); 
    } 

} 

當按鈕中的一個用戶點擊,這使他在同一個應用程序不同的活動。但是,當用戶從下一個活動中單擊時,動畫將再次開始。如何防止動畫再次顯示,因爲我希望它在用戶打開應用程序時只出現一次?

回答

1

你可以使用Application類。在它中聲明一個布爾變量var並在開始第二個Activity之前將其設置爲「true」。在第一個Activity的onCreate()中檢查這個布爾值,並且只動畫它是false(這意味着用戶還沒有開始第二項活動還沒有)。例如在你的包創建名爲App類:

public class App extends Application{  

    private static boolean animated; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     animated = false; 
    } 

    public static boolean getAnimated(){ 
     return animated; 
    } 

    public static void setAnimated(boolean animated1){ 
     animated = animated1; 
    } 

} 

註冊Appmanifest

<application 
     android:icon= ... 
     android:label= ... 
     android:name="yourpackage.name.App" > 

(我假設你的包名是:「你rpackage.name「)

現在改變你的代碼是這樣的:

if (!App.getAnimated()) { 
      App.setAnimated(true); 
      revolution.setVisibility(View.INVISIBLE); 
      login.setVisibility(View.INVISIBLE); 
      signUp.setVisibility(View.INVISIBLE); 
      ... 

或者你可以使用sharedpreferences,並從中獲取一個布爾值,當你要開始animation.You必須設置它的默認值」假「並且當用戶啓動第二個活動時,您必須將其設置爲」true「。

+0

我已經通過聲明'private boolean animated;'聲明瞭一個布爾值。之後,當用戶點擊一個按鈕時,我使用'onClickListener'將其設置爲false。但是,當我從下一個活動中單擊時,動畫會再次重複。我猜這是因爲當第一個活動再次啓動時,它將布爾'animated'重新實例化爲false,而之前將其設置爲true的時間被忽略。如何糾正? – Ankush

+0

@ user1696863你是否在擴展'Application'的類中聲明瞭這個布爾值?如果是,請不要忘記在'manifest'中註冊它。但是我想你會在Activity中聲明它。 – hasanghaforian

+0

我編輯了我的問題以顯示我當前的代碼。我仍然遇到同樣的問題。 – Ankush

1

您可以爲此設置一個標誌,第一次保持標誌true,當用戶單擊任何按鈕時,將標誌值設置爲false

現在開始動畫,如果標誌值是true

+0

實例化活動的「onCreate」方法之外的布爾動畫變量。 –