3

Я разрабатываю приложение для чата, и у меня возникают проблемы с выяснением того, как получить переход между двумя действиями для правильной анимации. Некоторое время я искал это в 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: Вот как это выглядит на данный момент: Animation at the moment

+0

@sushildlh видеть мое редактирование п или .gif, показывающий, как он работает (ошибочно) на данный момент – HePa

+0

используйте эту ссылку http://www.christianpeeters.com/android-tutorials/tutorial-activity-slide-animation/#more-483 и улучшите свое знание также ... нравится кодирование – sushildlh

+0

Я пробовал то, что они сделали в этом учебнике, но, к сожалению, это не помогло и дало те же результаты, что и в '.gif'. – HePa

ответ

0

использования этого.

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); 

использовать это в onBackPressed() метод ChatContentFragmentActivity Class .......

@Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     overridePendingTransition(R.anim.fade_out,0); 
    } 

и для клавиатуры просто добавьте эти строки в файле XML в EditText Tag из ChatContentFragmentActivity ....

android:focusable="true" 
android:focusableInTouchMode="true" 

наслаждаться кодирования ..........

+0

Хотя мне удалось заставить его работать в то же время, это также было бы жизнеспособным решением, поэтому я приму свой ответ. – HePa

Смежные вопросы