9

В связи с нормальным переносом Lollipop активности, имеющим общие элементы, например. https://github.com/codepath/android_guides/wiki/Shared-Element-Activity-Transition, довольно часто происходит переход из представления из представления Recycler в обычный вид целевой деятельности.Переход от общего элемента к просмотру в RecyclerView, возможно?

Однако, в случае целевого представления, также находится в наблюдателе recyclerView, есть ли способ сделать это возможным (то есть предоставить целевой вид ActivityOptionsCompat)?

Спасибо!

+0

Любые выводы? Интересно то же самое – Sunkas

ответ

0

Согласно моему расследованию, это невозможно. Прежде чем общий переход элемента может создать его анимацию, он должен сначала захватить начальное и конечное состояние каждого общего элемента, а именно его позицию, размер и внешний вид как в вызывающих, так и в вызываемых действиях/фрагментах. С помощью этой информации переход может определять, как каждый вид элемента совместного доступа должен быть на месте. (Через http://www.androiddesignpatterns.com/2015/01/activity-fragment-shared-element-transitions-in-depth-part3a.html)

Официальная документация объявляет ограничение:

классов, которые расширяют AdapterView, такие как ListView, управлять их дочерними представлениями способов, которые несовместимы с рамками переходов. Если вы пытаетесь анимировать представление на основе AdapterView, дисплей устройства может зависать.

http://developer.android.com/training/transitions/overview.html#Limitations

4

Это абсолютно возможно. Сделайте это, чтобы выполнить следующие действия:

  1. Отложить переход в своей целевой деятельности с помощью supportPostponeEnterTransition().
  2. Установите адаптер в RecyclerView.
  3. Начните отложенный переход после того, как RecyclerView нарисовал элементы.

Шаг 3 обычно работает с этим:

recyclerview.post(new Runnable() { 
      @Override 
      public void run() { 
       supportStartPostponedEnterTransition(); 
      } 
     });