2016-12-06 6 views
7

Ich versuche den Übergang von gemeinsam genutzten Elementen auf RecyclerView zu verwenden, aber es scheint nicht zu funktionieren.Austausch von freigegebenen Elementen in RecyclerView

Dies ist ein Teil meines Adapter, in dem ich makeSceneTransitionAnimation() verwenden:

public void onBindViewHolder(final BookViewHolder holder, final int position) { 
     holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(context, DetailsActivity.class); 
       ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity)context , holder.smallThumbnail, "thumbnailTransition"); 
       context.startActivity(intent, optionsCompat.toBundle()); 
      } 
     } 
} 
+0

auch den Code Ihrer DetailsActivity hinzufügen –

+0

Sie in diesem Tutorial schauen einmal https://github.com/codepath/android_guides/wiki/shared-element-activity-transition –

+0

@vinayManeti Es sieht aus, um den gleichen Code zu sein, außer dort wird es in einer Aktivität verwendet, und ich verwende es in einem Adapter. – RandomyzeEverything

Antwort

9

In Ihrem Adapter

holder.smallThumbnail.setTransitionName("thumbnailTransition"); 
Pair<View, String> pair1 = Pair.create((View) holder.smallThumbnail, holder.smallThumbnail.getTransitionName()); 

ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) mContext, pair1, pair2); 
mContext.startActivity(intent, optionsCompat.toBundle()); 

In Ihrem Detail Aktivität

getWindow().setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.shared_element_transation)); 
mainImage.setTransitionName("thumbnailTransition"); 

Hier ist diese Mainimage ist Imageview, wo Sie wollen Ihre bisherige Tätigkeit Thumbnail

shared_element_transation erstellen eine xml in res verwandeln> Übergang

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

Ich erhalte eine ClassCastException bei '(Activity) mContext' mit der Aussage" Anwendung kann nicht in Activity umgewandelt werden " – RandomyzeEverything

+0

Verwendung Aktivitätskontext möglicherweise übergeben Sie Anwendungskontext an Adapter oder 2nd Weg ist Callback-Schnittstelle machen und Code in Aktivität –

+0

Wie überlasse ich einen Aktivitätskontext anstelle eines Anwendungskontextes? – RandomyzeEverything

Verwandte Themen