【问题标题】:Android Activity Transition does not work with custom animationsAndroid Activity Transition 不适用于自定义动画
【发布时间】:2021-02-24 21:51:40
【问题描述】:

我不明白为什么 overridePendingTransition 不能用于自定义动画。

在 MainActivity 中:

private void goToDetails() {
    Intent intent = new Intent(requireContext(), DetailsActivity.class);
    startActivity(intent);
}

在 DetailsActivity 中

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

上面的代码按预期工作。但是,如果我从 android.R.anim.slide_in_left 和 slide_out_right 复制源文件,则将此行更改为:

overridePendingTransition(R.anim.my_slide_in_left, R.anim.my_slide_out_right);

然后动画不起作用 - 默认的上滑动画会发生。我没有更改布局文件中的代码,我只是复制/粘贴了它们,以便稍后进行调整。

/res/anim/my_slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-50%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

/res/anim/my_slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="50%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

【问题讨论】:

  • 我刚刚在自己的项目中做了同样的事情。 my_slide_out_right 和 my_slide_in_left 一切正常。尝试清除并重建项目
  • 我只是尝试了同样的事情——全新的项目(导航抽屉活动),在主页片段中添加了一个按钮,添加了空白活动,然后添加了与我的原始代码相同的动画——并且得到了相同的结果。动画根本行不通!另外:compileSdk = 30, minSdk = 25, targetSdk = 30

标签: android android-transitions


【解决方案1】:

MainActivity 点击事件:

startActivity(new Intent(getContext(), NewReportActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

BackPressed 上的DetailActivity:

finish();
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);

【讨论】:

  • 谢谢!将 overridePendingTransition 移动到 MainActivity 点击事件解决了它
猜你喜欢
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 2013-05-27
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
相关资源
最近更新 更多