0

У меня проблемы с андроидным переходом. У меня есть список recyclerview с несколькими элементами. Анимация должна начинаться с изображения любой строки при нажатии, но она не начинается, она начинается с середины строки.Исходная позиция перехода в неправильном месте

У меня есть фрагмент с RecyclerView, вот где переход начинается

fragment_states:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="namespace.fragments.StatesFragment"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerViewStates" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
    android:layout_marginBottom="?attr/actionBarSize" 
    /> 
</FrameLayout> 

предыдущий recyclerView имеет адаптер список, где строка определяется, как показано ниже. Здесь я определил android: transitionName = "stateImage", это изображение, с которого должен начаться переход.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="wrap_content"> 
    <ImageView 
     android:id="@+id/imgState" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:transitionName="stateImage" 
     android:padding="6dp" /> 
<TextView 
    android:padding="10dp" 
    android:layout_toRightOf="@id/imgState" 
    android:id="@+id/txtNombreEstado" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" 
    /> 
</RelativeLayout> 

Вот как я называю переход:

StatesFragment.java

public class StatesFragment extends Fragment { 
... 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

recyclerView.addOnItemTouchListener(new Helper.RecyclerTouchListener(getActivity(), recyclerView, new Helper.ClickListener() { 
      @Override 
      public void onClick(View view, int position) { 

       try {  
        Intent intent = new Intent(getActivity(), CitiesActivity.class); 

        //Check if we're running on Android 5.0 or higher 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
         // Call some material design APIs here 
         ActivityOptionsCompat options = ActivityOptionsCompat. 
           makeSceneTransitionAnimation(getActivity(), view, "stateImage"); 
         startActivity(intent, options.toBundle()); 
        } else { 
         // Implement this feature without material design 
         startActivity(intent); 
        } 


       } 
       catch (Exception ex) 
       { 

       } 
      } 

      @Override 
      public void onLongClick(View view, int position) { 

      } 
     })); 
} 

Любой idead на то, что я делаю неправильно?

ответ

1

Моя ошибка была в этой строке:

ActivityOptionsCompat options = ActivityOptionsCompat. 
           makeSceneTransitionAnimation(getActivity(), view, "stateImage"); 

Я проезжал мнение, в этом случае строки. Вот как я зафиксировал его

final ImageView image = (ImageView) 
          view.findViewById(R.id.stateImage); 

ActivityOptionsCompat options = ActivityOptionsCompat. 
           makeSceneTransitionAnimation(getActivity(), image, "stateImage");