Я разрабатываю приложение для чата, и у меня возникают проблемы с выяснением того, как получить переход между двумя действиями для правильной анимации. Некоторое время я искал это в Google, и я также искал SO для него, но извините заранее, если на этот вопрос уже был дан ответ.Анимация между действиями, одна из которых такова.
У меня есть ChatMainActivity
, в котором содержится фрагмент, содержащий список чатов и ChatContentFragmentActivity
, в котором содержится фрагмент, содержащий сообщения чата. Как видно ниже, я объявил ChatMainActivity как launchMode="singleTask"
в своем AndroidManifest.xml.
<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" />
Это мои анимации .xmls:
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>
А вот как я их использую:
В Adapter
из RecyclerView
, содержащих чатов в 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
ничего не делает.
Был такой вопрос, который я, кажется, не могу найти сейчас, что предположил, что singleTask был проблемой здесь, но я помню, что решение подсказывает в этом вопросе, не помогая мне.
Кто-нибудь знает, как я могу получить выход и ввести анимацию моего ChatMainActivity
?
Edit: Вот как это выглядит на данный момент:
@sushildlh видеть мое редактирование п или .gif, показывающий, как он работает (ошибочно) на данный момент – HePa
используйте эту ссылку http://www.christianpeeters.com/android-tutorials/tutorial-activity-slide-animation/#more-483 и улучшите свое знание также ... нравится кодирование – sushildlh
Я пробовал то, что они сделали в этом учебнике, но, к сожалению, это не помогло и дало те же результаты, что и в '.gif'. – HePa