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

}

ユーザーがいずれかのボタンをクリックすると、同じアプリ内の別のアクティビティに誘導されます。ただし、ユーザーが次のアクティビティからクリックして戻ると、アニメーションが再び開始されます。ユーザーがアプリを開いたときに一度だけアニメーションを表示したいので、アニメーションが再び表示されないようにするにはどうすればよいですか?

4

2 に答える 2

1

これにフラグを設定できます。最初はフラグtrueを保持し、ユーザーがいずれかのボタンをクリックすると、フラグ値を に設定しますfalse

フラグの値が の場合、アニメーションを開始しますtrue

于 2012-10-17T08:10:36.040 に答える
1

クラスを使用できます。その中でブール変数をApplication宣言し、2番目のアクティビティを開始する前に「true」に設定します。最初のアクティビティの onCreate() で、このブール値をチェックし、アニメーションのみを実行します。これは false です(ユーザーが2番目のアクティビティを開始していないことを意味します)まだ)。たとえば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」に設定し、ユーザーが2番目のアクティビティを開始するときに「true」に設定する必要があります。

于 2012-10-17T08:11:15.273 に答える