Задать вопрос
@nohchiadam

Как правильно организовать Shared element transition из RecyclerView в RecyclerView?

Здравствуйте, пытаюсь сделать Shared element transition из RecyclerView (расположен в фрагменте) в RecyclerView (расположен на активити).

Анимация получилась только при выходе(то есть при нажатии кнопки назад), а при входе просто мерцает и появляется активити.

Что я сделал?

В двух адаптерах сделал присвоение TransitionName.
В принимающий активити так же добавил код :

getWindow().setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.shared_element_transation));


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

RecylerView Adapter(точка входа)

@Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.myTextView.setText(mData.get(position).getText());
        holder.imageview.setImageResource(mData.get(position).getImageid());
        holder.imageview.setTransitionName("imagelogo"+ position);
    }

            

            public void onClick(View v) {
//
                         int pos = vHolder.getAdapterPosition();
//
                         Intent intent = new Intent(mContext,prophets.class);
                         Pair<View, String> pair1 = Pair.create((View) vHolder.imageview, vHolder.imageview.getTransitionName());
                         ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation((Activity) mContext,pair1);
                         intent.putExtra("name",0);
                         mContext.startActivity(intent, options.toBundle());


itemview

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

    <android.support.v7.widget.CardView
        android:id="@+id/card"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/imageid"
            android:paddingLeft="1dp"
            android:paddingRight="1dp"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:src="@drawable/nuh"
            android:transitionName="imagelogo"
            app:civ_border_width="2dp"
            app:civ_border_color="#000000"/>

        
    <TextView
        android:layout_toRightOf="@+id/imageid"
        android:layout_margin="5dp"
        android:id="@+id/Name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
       />


        </RelativeLayout>
    </android.support.v7.widget.CardView>

</LinearLayout>


RecylerView Adapter (Принимающий)

@Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {

        ((List3ViewHolder) holder).text.setText(((Send3) dataSet.get(position)).getText());
        ((List3ViewHolder) holder).imageid.setImageResource(((Send3) dataSet.get(position)).getImageid());
        ((List3ViewHolder) holder).imageid.setTransitionName("imagelogo" + position);
    }


itemview 2

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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"
    android:background="#000">



    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/imageid"
        android:paddingLeft="1dp"
        android:paddingRight="1dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_menu_gallery"
        android:transitionName="imagelogo"
        app:civ_border_width="2dp"
        app:civ_border_color="#FFFFFF"/>


    <TextView
        android:layout_marginLeft="3dp"
        android:layout_marginTop="50dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="10dp"
        android:id="@+id/text"
        android:textColor="#fff"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textSize="35sp"
        />


</RelativeLayout>

<b>Activity</b>



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        postponeEnterTransition();

////////////////////////////////
/
/
/
/
/


 getWindow().setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.shared_element_transation));

/////////////////////////////
/
/
/
  • Вопрос задан
  • 159 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы