web-dev-qa-db-ja.com

スライドアウトアニメーションが戻るボタンを押しても機能しませんか?

アクティビティを開始または終了するときにアニメーションを使用しています。アクティビティアニメーションへの入力は正常に機能しますが、終了アニメーションは適切に機能しません。戻るボタンを押すと終了アニメーションを開始します。最初に現在のアクティビティの入力アニメーションを開始し、次に戻るボタンを押すと簡単な終了アニメーションが必要な最後のアクティビティを表示します。

Slide_out.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%p"
    Android:toXDelta="-100%p" >

</translate>

Slide_in.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="100%p"
    Android:toXDelta="0%p" >

</translate>

アクションバーの戻るボタンが押されたとき

public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.home:

        finish();
        overridePendingTransition(R.anim.slide_out, R.anim.slide_in);
        return true;


    default:
        break;
    }

    return super.onOptionsItemSelected(item);

}
13
Tarun Sharma

私はslide_in.xmlを使用しました

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="100%"
    Android:toXDelta="0%" >

</translate>

slide_out.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="-100%" >

</translate>

slide_enter.xml

  <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="-100%"
    Android:toXDelta="0%" >

</translate>

slide_exit.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="100%" >

</translate>

コード

        Intent i=new Intent(Authentication.this,Login.class);
        startActivity(i);
        overridePendingTransition(R.anim.slide_in, R.anim.slide_out);

前へ

         finish();
         overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit);
7
Tarun Sharma

まず、アニメーションフォルダにもう1つのアニメーション、つまりnothing.xmlを作成します

nothing.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="0%" >

</translate>

これがあなたのslide_in.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="-100%"
    Android:toXDelta="0%" >

</translate>

およびslide_out.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="100%" >

</translate>

NewActivityを次のように呼び出します

startActivity(new Intent(CurrentActivity.this, NewActivity.class));
overridePendingTransition(R.anim.slide_in, R.anim.nothing);

次に、戻るボタンをクリックしてこれを実行します

finish();
overridePendingTransition(R.anim.nothing, R.anim.slide_out);
23
Mukesh Rana

onBackPressedにアニメーションを追加すると、戻るボタンをクリックするとアニメーションが表示されます。

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_in, R.anim.slide_out);   
}
4
Remees M Syde

戻るボタンの動作をオーバーライドすることで解決しました。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    finish();
    return true;
}

私は似たようなことをしました、そしてそれはうまくいきます、あなたはstartAnimation(your_xml)でanimate()を変えることができます、あなたはまた活動の背景を透明にする必要があります:

<item name="Android:windowBackground">@Android:color/transparent</item>

このアクティビティは下にスライドし、背景が透明であるため、スライドした瞬間にMainActivityが表示されます。編集-ツールバーの戻るボタン付き:

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            mainlinear.animate()
                    .translationY(ScUtils.getScreenHeight(getApplicationContext()))
                    .setDuration(210)
                    .setInterpolator(new AccelerateInterpolator())
                    .setListener(new AnimatorListenerAdapter() {
                        @Override
                        public void onAnimationEnd(Animator animation) {
                            ThemeActivity.super.onBackPressed();
                            overridePendingTransition(0, 0);
                           }
                          }).start();
                        }
                    });
0

アクティビティ入力アニメーションには、overridePendingTransition(R.anim.slide_out, R.anim.slide_in);関数でonCreate(...)を使用します。

終了アニメーションの場合は、同じ呼び出しをonPause(...)に配置します。

0
Rakshith Shetty

アクションバーに戻る/ホームボタンがありましたが、onBackPressedまたはfinishをオーバーライドしてもスライドアニメーションが表示されませんでした。したがって、このスニペットを ここ から追加する必要がありました。上記と同じslide_enterおよびslide_exitを使用する場合:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    switch(id) {
        // back button
        case Android.R.id.home:
            finish();
            overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit);
            return true;
    }

    return super.onOptionsItemSelected(item);
}

誰かがそれが役に立つと思った場合に備えて。

0
ab15