2015-02-14 7 views
10

Я использую анимацию при входе или выходе из операции, вхождение в анимацию активности отлично работает, но выход из анимации не работает. Я запускаю анимацию выхода, когда я нажимаю кнопку «Назад». Что происходит, это сначала начать вводить анимацию для текущей активности, а затем показать последнюю активность, что я хочу, чтобы простая анимация выхода была нажата на кнопку «Назад».слайд-анимация не работает на кнопку «Назад»?

Slide_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="0%p" 
    android:toXDelta="-100%p" > 

</translate> 

Slide_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="100%p" 
    android:toXDelta="0%p" > 

</translate> 

На панели действий снова нажата кнопка

public boolean onOptionsItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) { 
    case R.id.home: 

     finish(); 
     overridePendingTransition(R.anim.slide_out, R.anim.slide_in); 
     return true; 


    default: 
     break; 
    } 

    return super.onOptionsItemSelected(item); 

} 
+0

Предположим, у вас есть ActivityA теперь от где вы хотите, чтобы ваш ActivityB прийти от и как ActivityB выйдет. Пожалуйста, объясните немного, чтобы я мог помочь –

+0

Я хочу начать B с помощью анимации ввода. Я могу это сделать. но я хочу перейти к предыдущей деятельности (A) из B с анимацией выхода, как слева направо. Как я могу это сделать? –

+0

, так что вам нужно, чтобы ActivityB скользил слева от вашей ActivityA, а Back Back вы хотите, чтобы ActivityB скользнул вправо, где, когда ваша ActivityA останется такой же? –

ответ

3

Я использовал slide_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="100%" 
    android:toXDelta="0%" > 

</translate> 

slide_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="0%" 
    android:toXDelta="-100%" > 

</translate> 

slide_enter.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="-100%" 
    android:toXDelta="0%" > 

</translate> 

slide_exit.XML

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="0%" 
    android:toXDelta="100%" > 

</translate> 

Код

 Intent i=new Intent(Authentication.this,Login.class); 
     startActivity(i); 
     overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

К предыдущему

  finish(); 
     overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit); 
+6

Копирование ответа того, кто ответил на ваш вопрос, смешно. Я даже не знаю, как у вас столько оборотов. – berserk

+1

Этот ответ правильный. Но 'slide_out.xml', похоже, не имеет значения. Использование 'android: fromXDelta =" 0% "android: toXDelta =" 0% "' работает без видимой разницы. –

2

Добавить анимацию в onBackPressed, он будет покажите анимацию, нажав кнопку «Назад».

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

Я использую кнопку «Назад» на панели действий. Я показал код для этого –

+0

oops, извините. Как насчет замены финиша, назовите его, используя намерение. Как это. Intent intent = new Intent (this, PreviousActivity.class); intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity (намерение); –

+0

Но это убьет мою предыдущую деятельность, и все данные будут потеряны. –

0

Я сделал что-то похож, и он работает нормально, вы можете изменить одушевленные() с startAnimation (your_xml), вы также должны сделать деятельность фон прозрачным:

<item name="android:windowBackground">@android:color/transparent</item> 

Эта деятельность будет слайд вниз, а MainActivity будет виден в момент скольжения из-за прозрачного фона. EDIT - с панели инструментов кнопку назад:

toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      mainlinear.animate() 
        .translationY(ScUtils.getScreenHeight(getApplicationContext())) 
        .setDuration(210) 
        .setInterpolator(new AccelerateInterpolator()) 
        .setListener(new AnimatorListenerAdapter() { 
         @Override 
         public void onAnimationEnd(Animator animation) { 
          ThemeActivity.super.onBackPressed(); 
          overridePendingTransition(0, 0); 
          } 
          }).start(); 
         } 
        }); 
+0

Я использую кнопку возврата панели действий здесь, поэтому скажите выход для этого –

16

Во-первых, создать еще одну анимацию т.е. nothing.xml в вашей папке Anim

nothing.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="0%" 
    android:toXDelta="0%" > 

</translate> 

вот ваш slide_in. xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="-100%" 
    android:toXDelta="0%" > 

</translate> 

и slide_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="0%" 
    android:toXDelta="100%" > 

</translate> 

Теперь обратитесь к NewActivity как этот

startActivity(new Intent(CurrentActivity.this, NewActivity.class)); 
overridePendingTransition(R.anim.slide_in, R.anim.nothing); 

, а затем на кнопке назад мыши сделать это

finish(); 
overridePendingTransition(R.anim.nothing, R.anim.slide_out); 
+0

, как можно перемещать активность A, когда B выходит –

+0

, но вы сказали, что хотите ActivityA оставаться там, как есть? –

+0

Извините, я просто изменил требование. –

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