Android анимация не запускается из вызова view.post (new Runnable ()) - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть кнопка, при нажатии на которую появляется новый fragment. Этот фрагмент содержит RecyclerView. ПОСЛЕ загрузка RecyclerView завершена, я хочу выполнить анимацию для первого элемента, который я только что вставил.

Проблема, похоже, заключается в том, что для подтверждения того, что просмотрщик рециркуляции завершил загрузку, мне нужно поместить анимацию в recyclerView.post (новый Runnable ()), который, в свою очередь, не запускается.

Это мой код:

Первый фрагмент

bookSpotBtn.setOnClickListener(view -> {
    secondFragment s = new secondFragment();
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.fragment_container, s);
    fragmentTransaction.commitNow();

    triggerAddandAnimation(objectToAddToList, 0); // 0 -> position of element in recyclerview

}

Второй фрагмент

public void triggerAddandAnimation(MyObject m, int position){

    recyclerList.add(0, m) // to add my object to the adapter's list at position 0.
    recyclerAdapter.notifyItemInserted(0); // to show on UI

    // post is needed so recycler view can finish laying out views before I access the first one
    mRecyclerView.post(()->{
        CustomCellView fView = ((MyRecyclerAdapter.MyViewHolder) mRecyclerView.findViewHolderForAdapterPosition(0)).getView();
        animateCell(fView, m);
    });
} 

Проблема в том, что программа не выполняет startAnimation(animation) внутри animateCell.

animateCell:

 private void animateAddingCell(final CustomCellView f, final MyObject l) {


     Animation addAniamation = AnimationUtils.loadAnimation(f.getContext(), R.anim.slide_from_left);

       f.startAnimation(addAniamation);
}

Я думаю, что анимация не может быть запущена изнутри post(new Runnable).

...