アクティビティを開始または終了するときにアニメーションを使用しています。アクティビティアニメーションへの入力は正常に機能しますが、終了アニメーションは適切に機能しません。戻るボタンを押すと終了アニメーションを開始します。最初に現在のアクティビティの入力アニメーションを開始し、次に戻るボタンを押すと簡単な終了アニメーションが必要な最後のアクティビティを表示します。
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);
}
私は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);
まず、アニメーションフォルダにもう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);
onBackPressed
にアニメーションを追加すると、戻るボタンをクリックするとアニメーションが表示されます。
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}
戻るボタンの動作をオーバーライドすることで解決しました。
@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();
}
});
アクティビティ入力アニメーションには、overridePendingTransition(R.anim.slide_out, R.anim.slide_in);
関数でonCreate(...)
を使用します。
終了アニメーションの場合は、同じ呼び出しをonPause(...)
に配置します。
アクションバーに戻る/ホームボタンがありましたが、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);
}
誰かがそれが役に立つと思った場合に備えて。