Activity之间的动画,其中一个是singleTask
Animation between Activities, of which one is singleTask
我正在开发一个聊天应用程序,但在弄清楚如何让两个活动之间的过渡正确设置动画时遇到了问题。我已经用谷歌搜索了一段时间,也搜索过它,但如果这个问题已经得到回答,请提前道歉。
我有一个 ChatMainActivity
,它包含一个包含聊天列表的 Fragment 和一个 ChatContentFragmentActivity
,它包含一个包含聊天消息的 Fragment。如下所示,我在 AndroidManifest.xml.
中将 ChatMainActivity 声明为 launchMode="singleTask"
<activity
android:name=".ui.activities.ChatMainActivity"
android:launchMode="singleTask"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".ui.activities.ChatContentFragmentActivity"
android:parentActivityName=".ui.activities.ChatMainActivity"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustResize" />
这些是我的动画 .xml:
chat_content_activity_enter_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0" />
</set>
chat_content_activity_exit_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="100%" />
</set>
chat_list_activity_enter_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="-100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0" />
</set>
chat_list_activity_exit_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="-100%" />
</set>
下面是我如何使用它们:
在 RecyclerView
的 Adapter
中包含 ChatMainActivity
中的聊天记录
Intent intent = new Intent(context, ChatContentFragmentActivity.class);
context.startActivity(intent);
activity.overridePendingTransition(R.anim.chat_content_activity_enter_animation, R.anim.chat_list_activity_exit_animation);
ChatContentFragmentActivity
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.chat_content_activity_exit_animation, R.anim.chat_list_activity_enter_animation);
}
我现在的问题是显示了 ChatContentFragmentActivity
的进入和退出动画,但 ChatMainActivity
什么也没做。
有一个我现在似乎找不到的 SO 问题,它表明 singleTask 在这里是个问题,但我记得那个问题中建议的解决方案对我没有帮助。
有谁知道如何让 ChatMainActivity
的退出和进入动画播放?
编辑:这是目前的样子:
使用这个 .
pull_right.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="100%"
android:toXDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
/>
push_left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="-100%" />
fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />
</set>
在适配器中使用这个........
Intent intent = new Intent(context, ChatContentFragmentActivity.class);
context.startActivity(intent);
activity.overridePendingTransition(R.anim.pull_right, R.anim.push_left);
在 ChatContentFragmentActivity Class onBackPressed()
方法中使用它......
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition( R.anim.fade_out,0);
}
对于键盘,只需将这些行添加到您的 xml 文件中的 EditText
ChatContentFragmentActivity 标签中....
android:focusable="true"
android:focusableInTouchMode="true"
享受编码.........
我正在开发一个聊天应用程序,但在弄清楚如何让两个活动之间的过渡正确设置动画时遇到了问题。我已经用谷歌搜索了一段时间,也搜索过它,但如果这个问题已经得到回答,请提前道歉。
我有一个 ChatMainActivity
,它包含一个包含聊天列表的 Fragment 和一个 ChatContentFragmentActivity
,它包含一个包含聊天消息的 Fragment。如下所示,我在 AndroidManifest.xml.
launchMode="singleTask"
<activity
android:name=".ui.activities.ChatMainActivity"
android:launchMode="singleTask"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".ui.activities.ChatContentFragmentActivity"
android:parentActivityName=".ui.activities.ChatMainActivity"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustResize" />
这些是我的动画 .xml:
chat_content_activity_enter_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0" />
</set>
chat_content_activity_exit_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="100%" />
</set>
chat_list_activity_enter_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="-100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0" />
</set>
chat_list_activity_exit_animation.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@integer/activity_animation_duration"
android:fromXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="-100%" />
</set>
下面是我如何使用它们:
在 RecyclerView
的 Adapter
中包含 ChatMainActivity
Intent intent = new Intent(context, ChatContentFragmentActivity.class);
context.startActivity(intent);
activity.overridePendingTransition(R.anim.chat_content_activity_enter_animation, R.anim.chat_list_activity_exit_animation);
ChatContentFragmentActivity
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.chat_content_activity_exit_animation, R.anim.chat_list_activity_enter_animation);
}
我现在的问题是显示了 ChatContentFragmentActivity
的进入和退出动画,但 ChatMainActivity
什么也没做。
有一个我现在似乎找不到的 SO 问题,它表明 singleTask 在这里是个问题,但我记得那个问题中建议的解决方案对我没有帮助。
有谁知道如何让 ChatMainActivity
的退出和进入动画播放?
编辑:这是目前的样子:
使用这个 .
pull_right.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="100%"
android:toXDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
/>
push_left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="-100%" />
fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />
</set>
在适配器中使用这个........
Intent intent = new Intent(context, ChatContentFragmentActivity.class);
context.startActivity(intent);
activity.overridePendingTransition(R.anim.pull_right, R.anim.push_left);
在 ChatContentFragmentActivity Class onBackPressed()
方法中使用它......
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition( R.anim.fade_out,0);
}
对于键盘,只需将这些行添加到您的 xml 文件中的 EditText
ChatContentFragmentActivity 标签中....
android:focusable="true"
android:focusableInTouchMode="true"
享受编码.........