android - 如何使用 overridePendingTransition() 动画覆盖 onBackPressed()

标签 android

PlayPanel Activity 应在按下后退按钮时以滑动面板的形式关闭到 MainActivity。但是,没有动画。 PlayPanel Activity 正常关闭。

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>

解决方案:

 @Override
    public void onBackPressed() {
        super.onBackPressed();
        //startActivity(new Intent(this, MainActivity.class));
        overridePendingTransition(
                0,
                R.anim.play_panel_close_outgoing_activity
        );
    }

最佳答案

我之前实现了相同的动画。 此代码有效。请试一试。谢谢。

详细 Activity

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>

关于android - 如何使用 overridePendingTransition() 动画覆盖 onBackPressed(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32939551/

相关文章:

android - 启动GPS后立即获取位置

java - 我需要在我的服务器上做什么才能与 Android 应用程序通信?

具有网络图像缓存的Android Listview

android - Braintree Drop-in UI : ERROR: Failed to resolve: org. jfrog.cardinalcommerce.gradle :cardinalmobilesdk:2. 2.1-2?

android - 我可以排除将资源值构建到我的 Android 子项目中吗?

android - SQLite 更新返回受影响的行数,但数据未更新

android - 如何在带有 fragment 的操作栏上使用按钮?

android - 即使在加载 View 后,我的 ProgressDialog 也不会关闭。

android - 在 Android studio 4.0 中发现了多个 OS 独立路径 'META-INFmodule_debug.kotlin_module' 的文件

android - YouTube api过滤搜索,以查找今天添加的最新视频