开始用户离开它的活动

时间:2012-10-17 07:39:15

标签: android animation

我有以下代码:

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);
    }

}

当用户点击其中一个按钮时,会导致他在同一个应用中执行不同的活动。但是,当用户从下一个活动单击时,将再次启动动画。如何阻止动画再次显示,因为我希望它只在用户打开应用程序时出现一次?

2 个答案:

答案 0 :(得分:1)

您可以为此设置标记,首次保留标记true,当用户点击任意按钮时,将标记值设置为false

现在,如果标记值为true,则启动动画。

答案 1 :(得分:1)

你可以使用Application class.Declare一个boolean var并在开始第二个Activity之前将它设置为“true”。在你的第一个Activity的onCreate()中检查这个boolean并只做动画它是假的(它表示用户尚未启动第二个活动)。例如,在包中创建名为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;
    }

}

App注册manifest

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

(我想你的包名是:“yourpackage.name”)

现在改变你的代码:

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

或者您可以使用sharedpreferences并在想要开始动画时从中检索布尔值。您必须将其设置为默认值“false”,当用户启动第二个Activity时,您必须将其设置为“true”