【发布时间】: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