2015-10-09 4 views
0

Я работаю на фрагментах перевести анимацию, следуя ссылку: http://trickyandroid.com/fragments-translate-animation/отделка Анимация на кнопке Назад прессованная

Но я хочу, чтобы начать слайд вниз анимации, нажав кнопку назад, а заканчивая слайд вверх анимации, нажав кнопку Действия бара.

Slide_down.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <objectAnimator 
      android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
      android:propertyName="yFraction" 
      android:valueType="floatType" 
      android:valueFrom="0.58" 
      android:valueTo="1.0" 
      android:duration="@android:integer/config_mediumAnimTime"/> 
    <objectAnimator 
      android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
      android:propertyName="alpha" 
      android:valueType="floatType" 
      android:valueFrom="1" 
      android:valueTo="0" 
      android:duration="@android:integer/config_mediumAnimTime"/> 
</set> 

Slide.up.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <objectAnimator 
      android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
      android:propertyName="yFraction" 
      android:valueType="floatType" 
      android:valueFrom="1.0" 
      android:valueTo="0.58" 
      android:duration="@android:integer/config_mediumAnimTime"/> 
    <objectAnimator 
      android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
      android:propertyName="alpha" 
      android:valueType="floatType" 
      android:valueFrom="0.58" 
      android:valueTo="1.0" 
      android:duration="@android:integer/config_mediumAnimTime"/> 
</set> 

Код для анимации в Основной вид деятельности:

Fragment f = getFragmentManager().findFragmentByTag(LIST_FRAGMENT_TAG); 



     if (f != null) { 
      getFragmentManager().popBackStack(); 
     } else { 
      getFragmentManager().beginTransaction() 
        .setCustomAnimations(R.anim.slide_up, 
          R.anim.slide_down, 
          R.anim.slide_up, 
          R.anim.slide_down) 
      .add(R.id.list_fragment_container, SlidingListFragment 
          .instantiate(this, SlidingListFragment.class.getName()), 
        LIST_FRAGMENT_TAG 
      ) 
       .addToBackStack(null) .commit(); 

      googleMap.getUiSettings().setAllGesturesEnabled(false); 
      } 


     } 

Пожалуйста, помогите мне увеличить мои знания относительно этого.

+0

@Sandeep Patidar: Здравствуйте, я видел ваш комментарий в http://stackoverflow.com/questions/18119122/custom-activity-transition-animation-in-android. Просто хочу спросить, это тоже будет решением моей проблемы? –

+0

try 'Handler.postDelayed' – Neil

+0

@Neil: По моим сведениям, Handler.postDeleayed использует для очереди задачу. Я прав ? я не хочу задерживать его, я хочу анимировать слайд вниз, нажав кнопку «Назад». Иди, я ошибаюсь. пожалуйста, помогите мне с кодом для лучшего понимания. Спасибо . –

ответ

0

Обработчик может быть использован в качестве легкого таймера. Ключ - это анимация, как только активность начнет выполнять финиш, поэтому вам нужно отложить финиш, чтобы полностью увидеть анимацию.

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      MainActivity.super.onBackPressed(); 
     } 
    }, getResources().getInteger(android.R.integer.config_mediumAnimTime)); 
+0

Но для этого должен быть код onBackPressed(), который сдвигает анимацию, когда ее слайд вверх на экране? Что бы это было? OverridingPending()? –

+0

'overridePendingTransition' для активности, фактически переход фрагмента - это просто анимация общего вида. – Neil

+0

Тогда это должно мне нужно добавить, я думаю, для достижения того, что я хочу? public void onBackPressed() { overridePendingTransition (R.anim.slide_down, R.anim.slide_down); } –

0

Попробуйте сделать это внутри:

public void onBackPressed(){ 
    // do something here and don't write super.onBackPressed() 
} 
+0

Я сделал, но он застрял на слайде анимации. Могу ли вы, пожалуйста, помочь мне с кодом, который решает мой pbm. Thanx –

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