PlayPanel activity should close in the form of a sliding panel to MainActivity when back button is pressed. However, there is no animation. PlayPanel activity simply closes normally.
PlayPanel activity
public class PlayPanel extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_panel);
}
@Override
public void onBackPressed() {
Intent intent = new Intent(
PlayPanel.this,
MainActivity.class
);
startActivity(intent);
overridePendingTransition(
0,
R.anim.play_panel_close_background
);
}
// onCreateOptionsMenu goes here
// onOptionsItemSelected goes here
}
play_panel_close_background.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="600"
/>
</set>
the solution:
@Override
public void onBackPressed() {
super.onBackPressed();
//startActivity(new Intent(this, MainActivity.class));
overridePendingTransition(
0,
R.anim.play_panel_close_outgoing_activity
);
}
I implemented same animation before. This code works. Please try it. Thanks.
DetailActivity
public class DetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
overridePendingTransition(R.anim.activity_slide_start_enter, R.anim.activity_scale_start_exit);
}
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.activity_scale_finish_enter, R.anim.activity_slide_finish_exit);
}
@Override
public void onBackPressed() {
finish();
}
}
activity_slide_start_enter.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:shareInterpolator="false">
<translate
android:duration="200"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
activity_scale_start_exit.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:shareInterpolator="false">
<scale
android:duration="200"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.9"
android:toYScale="0.9" />
</set>
activity_scale_finish_enter.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:shareInterpolator="false">
<scale
android:duration="200"
android:fromXScale="0.9"
android:fromYScale="0.9"
android:interpolator="@android:anim/accelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
activity_slide_finish_exit.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:shareInterpolator="false">
<translate
android:duration="200"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%" />
</set>
According to documentation, the first argument to overridePendingTransition is the animation used for the incoming activity, ie. your MainActivity. And the second argument is used for the outgoing activity, ie. your PlayPanel.
play_panel_close_background.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:zAdjustment="top">
<translate
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="600"
/>
</set>
@Override
public void onBackPressed() {
//super.onBackPressed();
startActivity(new Intent(this, MainActivity.class));
overridePendingTransition(
0,
R.anim.play_panel_close_background
);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With