将动画应用于仅进入 activity android

Applying animation to only entering activity android

我想应用 activity 将过渡更改为仅进入 activity.Suppose 我正在推动 A-> B 然后我希望 A activity 保持静止并且 B 从底部到顶部。

我应用了以下代码但没有工作

 startActivityForResult(intent, SET_FILTER_REQUEST);
                overridePendingTransition(R.anim.translate_in_anim, R.anim.stay_still_anim);

我正在使用以下 xml 动画文件

stay_still_anim.xml

 <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="250"
    android:fromYDelta="0%p"
    android:toYDelta="0%p" />

translate_in_anim.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
           android:fillAfter="true">
  <translate android:fromYDelta="100"
         android:toYDelta="0%"
         android:duration="1000"/>
</set>

只保留 R.anim.out 为空:

<set xmlns:android="http://schemas.android.com/apk/res/android">

</set>

然后:

startActivity(new Intent(Main2Activity.this, MainActivity.class));
overridePendingTransition(R.anim.translate_in_anim, R.anim.out);

默认动画将完成 activity。

所以基本上,如果您更正动画 xml 文件,它将非常适合您。 首先要注意的是,为两者提供相同的动画持续时间 Xml。并将您的 fromYDelta 值从 100 更正为 100% 如下图所示。您可以将其复制并粘贴到您的代码中。

<set xmlns:android="http://schemas.android.com/apk/res/android"
       android:fillAfter="true">
     <translate android:fromYDelta="100%"
     android:toYDelta="0%"
     android:duration="@android:integer/config_longAnimTime"/>
</set>

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="0%p"
    android:toYDelta="0%p" />

我可以使用

解决这个问题
 overridePendingTransition(R.anim.abc_slide_in_bottom, android.R.anim.fade_out);

abc_slide_in_bottom.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
           android:interpolator="@android:anim/decelerate_interpolator"
           android:fromYDelta="50%p" android:toYDelta="0"
           android:duration="@android:integer/config_mediumAnimTime"/>