2016-05-31 4 views
3

У меня есть RecyclerView с некоторыми картами, каждая из которых содержит мини-плавучую кнопку действия. При щелчке по карте изображение на карте и фабрика используются при переходе общего элемента.Переход от общего элемента с плавающими кнопками кнопки ввода

При выполнении обратного перехода плавающая кнопка действия «защелкивается» обратно в исходное положение, а не анимирует красиво, как предполагалось.

Херес GIF, который показывает проблему: https://gfycat.com/SnappySeparateDeer

Мой код начала деятельности и переход:

Intent intent = new Intent(mContext, PlayActivity.class); 

       Pair<View, String> p1 = Pair.create((View)holder.coverArt, "coverArt"); 
       Pair<View, String> p2 = Pair.create((View) holder.fab, "fab"); 
       ActivityOptionsCompat options = ActivityOptionsCompat. 
         makeSceneTransitionAnimation(mActivity, p1, p2); 

       mContext.startActivity(intent, options.toBundle()); 

мини ФАБ на картах:

<android.support.design.widget.FloatingActionButton 
      android:id="@+id/fab" 
      app:fabSize="mini" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      app:layout_anchor="@id/coverArt" 
      app:layout_anchorGravity="bottom|right|end" 
      android:src="@drawable/ic_favorite" 
      android:layout_margin="16dp" 
      android:clickable="true" 
      android:transitionName="fab"/> 

и один в Деятельность:

<android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     app:layout_anchor="@id/coverArt" 
     app:layout_anchorGravity="bottom|right|end" 
     android:src="@drawable/ic_favorite" 
     android:layout_margin="16dp" 
     android:clickable="true" 
     android:transitionName="fab"/> 

EDIT: Я бы хотел увеличить щедрость, но кажется, что функция не реализована в SO по какой-то причине. Я уверен, что могу добавить дополнительные очки за лучший ответ, так что добавит еще +50. Благодаря!

+0

В чем именно проблема? –

+0

@ LukeSalamone переход не правильно выравнивается системой. Как вы можете видеть в обратном переходе, анимированные анимации возвращаются, но они привязываются влево к исходному положению вместо обычного плавного перехода. – Orbit

+0

Вы думали использовать 'overridePendingTransition()'? –

ответ

-2

Шаг: вам нужно настроить свой макет, а переходная анимация работает отлично. например

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="275dp"> 

     <ImageView 
      android:id="@+id/picture" 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:fitsSystemWindows="true" 
      android:scaleType="centerCrop" 
      android:transitionName="picture" 
      app:layout_collapseMode="parallax" /> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/fabButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true" 
      android:layout_marginBottom="5dp" 
      android:layout_marginRight="16dp" 
      android:src="@mipmap/like" 
      android:transitionName="fabButton" 
      app:fabSize="normal" /> 

    </RelativeLayout> 

</FrameLayout> 

Примечание: вы настраиваете размер макета и изображений.

+1

Я не уверен, как это должно решить проблему. Не могли бы вы немного объяснить свое решение? – Orbit

+0

сначала попробуйте это. – kapoor

0

Попытайтесь держать окна и фрагмент выхода/входа перехода, как описано ниже:

<?xml version="1.0" encoding="utf-8"?> 
<fade xmlns:android="http://schemas.android.com/apk/res/" android:duration="500"/> 

И общий элемент переходов как:

<?xml version="1.0" encoding="utf-8"?> 
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" 
      android:duration="500" 
      android:interpolator="@android:interpolator/decelerate_cubic"> 
    <changeBounds> 
    <arcMotion 
     android:maximumAngle="90" 
     android:minimumHorizontalAngle="90" 
     android:minimumVerticalAngle="0" /> 

    </changeBounds> 
</transitionSet> 

Я не уверен, что если что-нибудь, кроме ImageView имеет правильный переход последствия. Я пробовал на пользовательском представлении, которое я сделал в прошлый раз, и получал аналогичную проблему при входе в переходный период, в то время как возврат был идеальным.

+0

FAB расширяет ImageView. Во всяком случае, это, похоже, не работает, и им достаточно определенно ''. – Orbit

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