2012-10-17 35 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”方法之外的布尔动画变量。 –