将动画应用于仅进入 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"/>
我想应用 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"/>